Python 不僅支持 if 語句相互嵌套,while 和 for 循環結構也支持嵌套。所謂嵌套(Nest),就是一條語句裡面還有另一條語句,例如 for 裡面還有 for,while 裡面還有 while,甚至 while 中有 for 或者 for 中有 while 也都是允許的。
當 2 個(甚至多個)循環結構相互嵌套時,位於外層的循環結構常簡稱為外層循環或外循環,位於內層的循環結構常簡稱為內層循環或內循環。
循環嵌套結構的代碼,Python 解釋器執行的流程為:
循環嵌套的執行流程圖如下圖所示:
下面程序演示了 while-for 嵌套結構:
i = 0
while i<10:
for j in range(10):
print("i=",i," j=",j)
i=i+1
由於程序輸出結果篇幅太長,讀者可自行拷貝代碼並執行,觀察其執行結果。
可以看到,此程序中運用了嵌套循環結構,其中外循環使用的是 while 語句,而內循環使用的是 for 語句。程序執行的流程是:
根據上面的分析,此程序中外層循環將循環 10 次(從 i=0 到 i=9),而每次執行外層循環時,內層循環都從 j=0 循環執行到 j=9。因此,該嵌套循環結構將執行 10*10 = 100 次。
嵌套循環執行的總次數 = 外循環執行次數 * 內循環執行次數
事實上,if 語句和循環(while、for)結構之間,也可以相互嵌套,舉個例子:
i = 0
if i<10:
for j in range(5):
print("i=",i," j=",j)
程序執行結果為:
i= 0 j= 0
i= 0 j= 1
i= 0 j= 2
i= 0 j= 3
i= 0 j= 4
需要指明的是,上面程序演示的僅是 2 層嵌套結構,其實 if、while、for 之間完全支持多層( ≥3 )嵌套。例如:
if ...:
while ...:
for ...:
if ...:
...
也就是說,只要場景需要,判斷結構和循環結構之間完全可以相互嵌套,甚至可以多層嵌套。