<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
所謂巢狀迴圈就是一個外迴圈的主體部分是一個內迴圈。內迴圈或外迴圈可以是任何型別,例如 while 迴圈或 for 迴圈。 例如,外部 for 迴圈可以包含一個 while 迴圈,反之亦然。外迴圈可以包含多個內迴圈。 迴圈鏈沒有限制。
在巢狀迴圈中,迭代次數將等於外迴圈中的迭代次數乘以內迴圈中的迭代次數。在外迴圈的每次迭代中,內迴圈執行其所有迭代。 對於外迴圈的每次迭代,內迴圈重新開始並在外迴圈可以繼續下一次迭代之前完成其執行。巢狀迴圈通常用於處理多維資料結構,例如列印二維陣列、迭代包含巢狀列表的列表。巢狀迴圈是控制流語句的一部分,可幫助您瞭解 Python 的基礎知識。
在 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 迴圈程式以在 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()
輸出:
巢狀迴圈的另一個最常見用途是列印各種星形和數位模式。讓我們看看如何使用巢狀迴圈在 Python 中列印以下模式。
rows = 5 # outer loop for i in range(1, rows + 1): # inner loop for j in range(1, i + 1): print("*", end=" ") print('')
在一種迴圈中使用另一種型別的迴圈非常常見且很有幫助。 我們可以在 for 迴圈中放置一個 while 迴圈。
假設我們想將列表中的每個名稱重複五次:
# 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()
輸出:
列印以下星形矩形:
# 5 rows for name in range(5): # 3 column for j in range(3): print('*', end='') print()
break
語句用於迴圈內部退出迴圈。 如果在巢狀迴圈內使用 break 語句(在另一個迴圈內迴圈),它將終止最內層迴圈。
在下面的範例中,我們有兩個迴圈。 外部 for 迴圈使用 range() 函數迭代前四個數位,內部 for 迴圈也迭代前四個數位。 如果外部編號和內部迴圈的當前編號相同,則中斷內部(巢狀)迴圈。
for i in range(4): for j in range(4): if j == i: break print(i, j)
輸出:
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)
輸出:
例如,如果您有兩個列表並想要獲取它們的所有組合,為了實現這一點,您需要使用兩個巢狀迴圈,如下所述。
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 i in first for j in second]
。[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)
輸出:
在 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()
輸出:
有時在另一種迴圈中使用一種迴圈會很有幫助。 我們可以在while迴圈裡面放一個for迴圈。假設我們想要列印從 1 到 100 的所有完美數位。
while
迴圈迭代前 100 個數位。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
輸出:
記住時間複雜度。 讓我們通過 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 次迭代,那麼它的時間複雜度會更小。
當我們沒有更好的選擇時使用巢狀迴圈,請記住編寫高效且緊湊的程式碼遠勝於編寫複雜的程式碼
到此這篇關於Python中的巢狀迴圈詳情的文章就介紹到這了,更多相關Python巢狀迴圈內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45