Python使用單個循環遍歷二維數組


通常情況下,在Python中遍歷二維列表,常用的方法是兩個for的嵌套,然而在操作過程中會發現一個問題,如果想要跳出兩層循環會顯得較為麻煩。

numList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in numList:
    for each in i:
        print(each, end=' ')
    print()

輸出結果:

1 2 3 
4 5 6 
7 8 9 

跳出兩層循環,幾種常見方法如封裝成函數用return,設立標志變量,自定義異常......
如果能把一些簡單的嵌套循環,修改為只使用一個循環即可完成的代碼,則在某些情況下會使操作方便許多,以下嘗試用一個while循環遍歷二維列表:

numList = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
i = j = 0

#如果將該二維列表比作4行3列的表格...
while numList[i][j] != 5: #自行定義跳出條件

    #記錄當前所在行並判斷是否前進到下一行,依據是當前列是否到達該行的結尾
    i = (i if j != len(numList[i])-1 else i+1)

    #記錄當前所在列並判斷是繼續前進還是回到列頭,依據同樣是是否到達該行的結尾
    j = (j+1 if j != len(numList[i])-1 else 0) 

    print(numList[i][j], end=' ')

輸出結果為:

2 3 4 5

如果這樣寫,既能自定義前進方式,又能簡單的通過break,continue之類的關鍵字來控制循環,整個操作就比較靈活方便。而需要注意的點就是在進行判斷時掌握好判斷邏輯,避免出現bug。根據需要,對代碼進行修改,還能達到三維,四維...的遍歷。


以上是個人根據平時總結的一些方法和技巧,若有疏漏或更好的建議,非常歡迎對此作出評論或提出意見,這樣對我也會有很大的幫助!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM