網站首頁 編程語言 正文
1 什么是嵌套循環
所謂嵌套循環就是一個外循環的主體部分是一個內循環。內循環或外循環可以是任何類型,例如 while 循環或 for 循環。 例如,外部 for 循環可以包含一個 while 循環,反之亦然。外循環可以包含多個內循環。 循環鏈沒有限制。
在嵌套循環中,迭代次數將等于外循環中的迭代次數乘以內循環中的迭代次數。在外循環的每次迭代中,內循環執行其所有迭代。 對于外循環的每次迭代,內循環重新開始并在外循環可以繼續下一次迭代之前完成其執行。嵌套循環通常用于處理多維數據結構,例如打印二維數組、迭代包含嵌套列表的列表。嵌套循環是控制流語句的一部分,可幫助您了解 Python 的基礎知識。
2 Python 嵌套 for 循環
在 Python 中,for 循環用于迭代序列,例如列表、字符串、元組,以及其他可迭代對象,例如范圍。在 Python 中使用嵌套 for 循環的語法:
# outer for loop
for element in sequence
# inner for loop
for element in sequence:
body of inner for loop
body of outer for loop
在此示例中,我們在 for 循環中使用了 for 循環。 在本例中,我們打印前十個數字的乘法表。
- 外部 for 循環使用 range() 函數迭代前十個數字。
- 對于每個外部數字,內部 for 循環將執行十次。
- 在內循環的主體中,我們將打印外部數字和當前數的乘積。
- 內循環只不過是外循環的主體。
示例:編寫一個嵌套的 for 循環程序以在 Python 中打印乘法表。
# outer loop
for i in range(1, 11):
# nested loop
# to iterate from 1 to 10
for j in range(1, 11):
# print multiplication
print(i * j, end=' ')
print()
輸出:
- 在這個程序中,外部 for 循環是從 1 到 10 迭代數字。 range() 返回 10 個數字。 所以外循環的總迭代次數是 10。
- 在嵌套循環的第一次迭代中,數字是 1。在下一次,它是 2。依此類推,直到 10。
- 接下來,對于外循環的每次迭代,內循環將執行十次。 內部循環也將執行 10 次,因為我們打印的乘法表最多為 10。
- 在內部循環的每次迭代中,我們計算了兩個數字的乘法。
2.1 嵌套循環打印圖案
嵌套循環的另一個最常見用途是打印各種星形和數字模式。讓我們看看如何使用嵌套循環在 Python 中打印以下模式。
rows = 5
# outer loop
for i in range(1, rows + 1):
# inner loop
for j in range(1, i + 1):
print("*", end=" ")
print('')
- 在這個程序中,外循環是打印的行數。
- 行數是五,所以外循環會執行五次。
- 接下來,內部循環是每行中的總列數。
- 對于外部循環的每次迭代,列計數都會增加 1。
- 在外循環的第一次迭代中,列數為 1,下一次為 2。依此類推。
- 內部循環迭代等于列數。
- 在內部循環的每次迭代中,我們打印 star。
2.2 在 for 循環中的while循環
在一種循環中使用另一種類型的循環非常常見且很有幫助。 我們可以在 for 循環中放置一個 while 循環。假設我們想將列表中的每個名稱重復五次:
- 在這里,我們將使用外部 for 循環迭代列表。
- 外層for循環每次迭代,內層for循環執行5次,打印當前名稱5次。
names = ['Kelly', 'Jessa', 'Emma']
# outer loop
for name in names:
# inner while loop
count = 0
while count < 5:
print(name, end=' ')
# print(name)
# increment counter
count = count + 1
print()
輸出:
2.3 實踐:打印一個帶有 5 行 3 列星形的矩形圖案
打印以下星形矩形:
# 5 rows
for name in range(5):
# 3 column
for j in range(3):
print('*', end='')
print()
3 打破嵌套循環
break 語句用于循環內部退出循環。 如果在嵌套循環內使用 break 語句(在另一個循環內循環),它將終止最內層循環。
在下面的示例中,我們有兩個循環。 外部 for 循環使用 range() 函數迭代前四個數字,內部 for 循環也迭代前四個數字。 如果外部編號和內部循環的當前編號相同,則中斷內部(嵌套)循環。
for i in range(4):
for j in range(4):
if j == i:
break
print(i, j)
輸出:
4 繼續嵌套循環
continue 語句跳過當前迭代并移動到下一個迭代。 在 Python 中,當循環內遇到 continue 語句時,它會跳過它下面的所有語句并立即跳轉到下一次迭代。
在下面的示例中,我們有兩個循環。 外部 for 循環迭代第一個列表,內部循環也迭代第二個數字列表。如果外部編號和內部循環的當前編號相同,則移動到內部循環的下一次迭代。
first = [2, 4, 6]
second = [2, 4, 6]
for i in first:
for j in second:
if i == j:
continue
print(i, '*', j, '= ', i * j)
輸出:
5 使用列表理解的單行嵌套循環
例如,如果您有兩個列表并想要獲取它們的所有組合,為了實現這一點,您需要使用兩個嵌套循環,如下所述。
first = [2, 3, 4]
second = [20, 30, 40]
final = []
for i in first:
for j in second:
final.append(i+j)
print(final)
您可以使用列表壓縮和嵌套循環編寫更快速、更緊湊的代碼,如下所示。
first = [2, 3, 4]
second = [20, 30, 40]
final = [i+j for i in first for j in second]
print(final)
輸出:
代碼編寫思路:
- 首先,編寫一個外部 for 循環,它將迭代第一個列表,如 [for i in first]。
- 接下來,編寫一個內部循環,它將在外部循環之后迭代第二個列表,例如 [for i in first for j in second]。
- 最后,計算外數和內數之和,如 [i+j for i in first for j in second]。
- 最后,將結果存儲在一個新列表中,例如 final = [i+j for i in first for j in second]。
下面讓我們看看其他的例子:
在這個例子中,我們將在列表中使用兩個 for 循環,最終結果將是一個列表列表。 我們不會在每個列表中包含相同的數字。 我們將使用 if 條件過濾它們。
final = [[x, y] for x in [10, 20, 30] for y in [30, 10, 50] if x != y]
print(final)
輸出:
6 Python中的嵌套while循環
在 Python 中,while 循環語句在特定條件為真時重復執行代碼塊。 當數字迭代不固定時,我們使用 while 循環。在本節中,我們將了解如何在另一個 while 循環中使用 while 循環。在 Python 中編寫嵌套的 while 循環語句的語法如下:
while expression:
while expression:
statement(s)
statement(s)
在下面例子中,我們將在每行打印前 10 個數字 5 次。
i = 1
while i <= 5:
j = 1
while j <= 10:
print(j, end='')
j = j + 1
i = i + 1
print()
輸出:
6.1 While 循環內的 for 循環
有時在另一種循環中使用一種循環會很有幫助。 我們可以在while循環里面放一個for循環。假設我們想要打印從 1 到 100 的所有完美數字。
- 在這里,我們將使用 while 循環迭代前 100 個數字。
- 在外部while循環的每次迭代中,內部for循環從1到當前外部數字執行,以檢查當前數字是否為完美數字。(完美數字是一個數學概念,感興趣的讀者可再深入查詢)
print('Show Perfect number fom 1 to 100')
n = 2
# outer while loop
while n <= 100:
x_sum = 0
# inner for loop
for i in range(1, n):
if n % i == 0:
x_sum += i
if x_sum == n:
print('Perfect number:', n)
n += 1
輸出:
7 何時在 Python 中使用嵌套循環?
- 當您有需要通過相同函數循環的嵌套數組或列表時,嵌套循環很方便。
- 當您想使用行和列打印不同的星形和數字模式時。
記住時間復雜度。 讓我們通過 Python 中嵌套 for 循環如何工作的示例來理解這一點。我們使用 for 循環迭代序列或可迭代的給定元素。 就像我在列表中一樣。 這里的時間復雜度是 O(n),因為我們正在迭代列表中的所有項目。執行步驟(迭代)的數量決定了循環的時間復雜度。當您使用嵌套循環并且外部和內部循環都在沒有任何 if 條件的情況下運行時,時間復雜度為 O(n^2),因為對于所有 n 個元素,代碼都會執行 n 次。
numbers = [[1, 2, 3], [4, 5, 6]]
cnt = 0
for i in numbers:
for j in i:
print('iteration', cnt, end=': ')
print(j)
cnt = cnt + 1
輸出:
如果您在內部循環中給出一個條件,該條件將在某些元素之后停止執行,并且不執行內部循環或外部循環的所有 n 次迭代,那么它的時間復雜度會更小。
當您沒有更好的選擇時使用嵌套循環,請記住編寫高效且緊湊的代碼遠勝于編寫復雜的代碼。
原文鏈接:https://blog.csdn.net/m0_59485658/article/details/123665124
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-09-18 基于WPF實現用戶頭像選擇器的示例代碼_C#教程
- 2023-01-05 C#不提升自己程序的權限實現操作注冊表_C#教程
- 2022-07-28 Redis基本數據類型List常用操作命令_Redis
- 2022-10-06 C++中的struct和class的區別詳解_C 語言
- 2022-09-23 Golang分布式應用之Redis示例詳解_Golang
- 2022-08-17 C++詳解Primer文本查詢程序的實現_C 語言
- 2022-04-16 C語言線性表之雙鏈表詳解_C 語言
- 2022-09-28 LyScript實現對內存堆棧掃描的方法詳解_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支