您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python嵌套循環(huán)如何使用的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Python嵌套循環(huán)如何使用文章都會有所收獲,下面我們一起來看看吧。
所謂嵌套循環(huán)就是一個外循環(huán)的主體部分是一個內(nèi)循環(huán)。內(nèi)循環(huán)或外循環(huán)可以是任何類型,例如 while 循環(huán)或 for 循環(huán)。 例如,外部 for 循環(huán)可以包含一個 while 循環(huán),反之亦然。外循環(huán)可以包含多個內(nèi)循環(huán)。 循環(huán)鏈沒有限制。
在嵌套循環(huán)中,迭代次數(shù)將等于外循環(huán)中的迭代次數(shù)乘以內(nèi)循環(huán)中的迭代次數(shù)。在外循環(huán)的每次迭代中,內(nèi)循環(huán)執(zhí)行其所有迭代。 對于外循環(huán)的每次迭代,內(nèi)循環(huán)重新開始并在外循環(huán)可以繼續(xù)下一次迭代之前完成其執(zhí)行。嵌套循環(huán)通常用于處理多維數(shù)據(jù)結(jié)構(gòu),例如打印二維數(shù)組、迭代包含嵌套列表的列表。
在 Python 中,for 循環(huán)用于迭代序列,例如列表、字符串、元組,以及其他可迭代對象,例如范圍。在 Python 中使用嵌套 for 循環(huán)的語法:
# 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 循環(huán)中使用了 for 循環(huán)。 在本例中,我們打印前十個數(shù)字的乘法表。
外部 for 循環(huán)使用 range() 函數(shù)迭代前十個數(shù)字。
對于每個外部數(shù)字,內(nèi)部 for 循環(huán)將執(zhí)行十次。
在內(nèi)循環(huán)的主體中,我們將打印外部數(shù)字和當(dāng)前數(shù)的乘積。
內(nèi)循環(huán)只不過是外循環(huán)的主體。
示例:編寫一個嵌套的 for 循環(huán)程序以在 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 循環(huán)是從 1 到 10 迭代數(shù)字。 range() 返回 10 個數(shù)字。 所以外循環(huán)的總迭代次數(shù)是 10。
在嵌套循環(huán)的第一次迭代中,數(shù)字是 1。在下一次,它是 2。依此類推,直到 10。
接下來,對于外循環(huán)的每次迭代,內(nèi)循環(huán)將執(zhí)行十次。 內(nèi)部循環(huán)也將執(zhí)行 10 次,因?yàn)槲覀兇蛴〉某朔ū碜疃酁?10。
在內(nèi)部循環(huán)的每次迭代中,我們計(jì)算了兩個數(shù)字的乘法。
嵌套循環(huán)的另一個最常見用途是打印各種星形和數(shù)字模式。讓我們看看如何使用嵌套循環(huán)在 Python 中打印以下模式。
rows = 5 # outer loop for i in range(1, rows + 1): # inner loop for j in range(1, i + 1): print("*", end=" ") print('')
在這個程序中,外循環(huán)是打印的行數(shù)。
行數(shù)是五,所以外循環(huán)會執(zhí)行五次。
接下來,內(nèi)部循環(huán)是每行中的總列數(shù)。
對于外部循環(huán)的每次迭代,列計(jì)數(shù)都會增加 1。
在外循環(huán)的第一次迭代中,列數(shù)為 1,下一次為 2。依此類推。
內(nèi)部循環(huán)迭代等于列數(shù)。
在內(nèi)部循環(huán)的每次迭代中,我們打印 star。
在一種循環(huán)中使用另一種類型的循環(huán)非常常見且很有幫助。 我們可以在 for 循環(huán)中放置一個 while 循環(huán)。假設(shè)我們想將列表中的每個名稱重復(fù)五次:
在這里,我們將使用外部 for 循環(huán)迭代列表。
外層for循環(huán)每次迭代,內(nèi)層for循環(huán)執(zhí)行5次,打印當(dāng)前名稱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()
輸出:
打印以下星形矩形:
# 5 rows for name in range(5): # 3 column for j in range(3): print('*', end='') print()
break 語句用于循環(huán)內(nèi)部退出循環(huán)。 如果在嵌套循環(huán)內(nèi)使用 break 語句(在另一個循環(huán)內(nèi)循環(huán)),它將終止最內(nèi)層循環(huán)。
在下面的示例中,我們有兩個循環(huán)。 外部 for 循環(huán)使用 range() 函數(shù)迭代前四個數(shù)字,內(nèi)部 for 循環(huán)也迭代前四個數(shù)字。 如果外部編號和內(nèi)部循環(huán)的當(dāng)前編號相同,則中斷內(nèi)部(嵌套)循環(huán)。
for i in range(4): for j in range(4): if j == i: break print(i, j)
輸出:
continue 語句跳過當(dāng)前迭代并移動到下一個迭代。 在 Python 中,當(dāng)循環(huán)內(nèi)遇到 continue 語句時(shí),它會跳過它下面的所有語句并立即跳轉(zhuǎn)到下一次迭代。
在下面的示例中,我們有兩個循環(huán)。 外部 for 循環(huán)迭代第一個列表,內(nèi)部循環(huán)也迭代第二個數(shù)字列表。如果外部編號和內(nèi)部循環(huán)的當(dāng)前編號相同,則移動到內(nèi)部循環(huán)的下一次迭代。
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)
輸出:
例如,如果您有兩個列表并想要獲取它們的所有組合,為了實(shí)現(xiàn)這一點(diǎn),您需要使用兩個嵌套循環(huán),如下所述。
first = [2, 3, 4] second = [20, 30, 40] final = [] for i in first: for j in second: final.append(i+j) print(final)
您可以使用列表壓縮和嵌套循環(huán)編寫更快速、更緊湊的代碼,如下所示。
first = [2, 3, 4] second = [20, 30, 40] final = [i+j for i in first for j in second] print(final)
輸出:
代碼編寫思路:
首先,編寫一個外部 for 循環(huán),它將迭代第一個列表,如 [for i in first]。
接下來,編寫一個內(nèi)部循環(huán),它將在外部循環(huán)之后迭代第二個列表,例如 [for i in first for j in second]。
最后,計(jì)算外數(shù)和內(nèi)數(shù)之和,如 [i+j for i in first for j in second]。
最后,將結(jié)果存儲在一個新列表中,例如 final = [i+j for i in first for j in second]。
下面讓我們看看其他的例子:
在這個例子中,我們將在列表中使用兩個 for 循環(huán),最終結(jié)果將是一個列表列表。 我們不會在每個列表中包含相同的數(shù)字。 我們將使用 if 條件過濾它們。
final = [[x, y] for x in [10, 20, 30] for y in [30, 10, 50] if x != y] print(final)
輸出:
在 Python 中,while 循環(huán)語句在特定條件為真時(shí)重復(fù)執(zhí)行代碼塊。 當(dāng)數(shù)字迭代不固定時(shí),我們使用 while 循環(huán)。在本節(jié)中,我們將了解如何在另一個 while 循環(huán)中使用 while 循環(huán)。在 Python 中編寫嵌套的 while 循環(huán)語句的語法如下:
while expression: while expression: statement(s) statement(s)
在下面例子中,我們將在每行打印前 10 個數(shù)字 5 次。
i = 1 while i <= 5: j = 1 while j <= 10: print(j, end='') j = j + 1 i = i + 1 print()
輸出:
有時(shí)在另一種循環(huán)中使用一種循環(huán)會很有幫助。 我們可以在while循環(huán)里面放一個for循環(huán)。假設(shè)我們想要打印從 1 到 100 的所有完美數(shù)字。
在這里,我們將使用 while 循環(huán)迭代前 100 個數(shù)字。
在外部while循環(huán)的每次迭代中,內(nèi)部for循環(huán)從1到當(dāng)前外部數(shù)字執(zhí)行,以檢查當(dāng)前數(shù)字是否為完美數(shù)字。(完美數(shù)字是一個數(shù)學(xué)概念,感興趣的讀者可再深入查詢)
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
輸出:
當(dāng)您有需要通過相同函數(shù)循環(huán)的嵌套數(shù)組或列表時(shí),嵌套循環(huán)很方便。
當(dāng)您想使用行和列打印不同的星形和數(shù)字模式時(shí)。
記住時(shí)間復(fù)雜度。 讓我們通過 Python 中嵌套 for 循環(huán)如何工作的示例來理解這一點(diǎn)。我們使用 for 循環(huán)迭代序列或可迭代的給定元素。 就像我在列表中一樣。 這里的時(shí)間復(fù)雜度是 O(n),因?yàn)槲覀冋诘斜碇械乃许?xiàng)目。執(zhí)行步驟(迭代)的數(shù)量決定了循環(huán)的時(shí)間復(fù)雜度。當(dāng)您使用嵌套循環(huán)并且外部和內(nèi)部循環(huán)都在沒有任何 if 條件的情況下運(yùn)行時(shí),時(shí)間復(fù)雜度為 O(n^2),因?yàn)閷τ谒?n 個元素,代碼都會執(zhí)行 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èi)部循環(huán)中給出一個條件,該條件將在某些元素之后停止執(zhí)行,并且不執(zhí)行內(nèi)部循環(huán)或外部循環(huán)的所有 n 次迭代,那么它的時(shí)間復(fù)雜度會更小。當(dāng)您沒有更好的選擇時(shí)使用嵌套循環(huán),請記住編寫高效且緊湊的代碼遠(yuǎn)勝于編寫復(fù)雜的代碼。
關(guān)于“Python嵌套循環(huán)如何使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Python嵌套循環(huán)如何使用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。