私はリスト内包を学習していますが、同じように動作するはずですが、変数を切り替えることで2つの異なる結果が得られます。リスト内包語のステートメントを並べ替えるときのNameError
[(i,j) for j in range(len(a[i])) for i in range(len(a))]
戻り値:
[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4)]
予想通り
配列a
は[[0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
リスト内包1つの作品に等しいです。
しかし、変数をひっくり返す... NameErrorで
[(j,i) for i in range(len(a[j])) for j in range(len(a))]
結果:名「jが」
が定義されていない、私やjが最初に来るかどうかを重要なぜ誰かが私に説明していただけますか?
最初の例であるネストされたリストのcompは、タプルのリストのリストを作成します。または、答えにその出力を含めてください。 –
OKは意味があります。したがって、最初の例では、括弧の後のforループが最初に実行されますか?たとえば、ninecells = [[a [0] [0] + w、範囲(-1,2)のwの範囲(-1,2)のhの[0] [1] + h] 'それで'のためのhの範囲の 'は最初に走るでしょうか? – st4rgut
@ PM2Ring良い点が追加されました。 – Meerness