Pythonは単一のループを使用して2 D配列を巡回する

1049 ワード

通常、Pythonでは2 Dリストを巡回し、2つのforのネストが一般的ですが、操作中に2つのループから飛び出すのは面倒な問題が見つかります.
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 

2層のループを飛び出して、いくつかの一般的な方法は関数にカプセル化してreturnを使って、標識変数を設立して、異常をカスタマイズします......単純なネストされたループを1つのループだけで完了するコードに変更できる場合は、いくつかの場合、操作が便利になります.次のようにwhileループで2 Dリストを巡回してみます.
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)-1 else 0)    //     ,              

このように書くと、進み方をカスタマイズしたり、break、continueなどのキーワードで簡単にループを制御したりすることができ、操作全体が柔軟で便利になります.注意すべき点は、判断を行うときに判断ロジックを身につけ、バグを避けることです.必要に応じて、コードを修正し、3 D、4 Dに達することもできます.の各見出しページがあります.
以上は、個人が普段まとめている方法やテクニックに基づいて、漏れやより良いアドバイスがあれば、コメントや意見を歓迎します.これは私にも大きな助けになります.