私はこのようなPythonで二次元配列を定義:パイソン:2次元リスト内の値の割り当ての混乱
a = [[1]*3]*3
及びI 2であることが一つの要素を割り当てる、等:
a[1][1] = 2
しかし、あることが判明:
代わりに、私はこのように考えたものの[[1,2,1],[1,2,1],[1,2,1]]
:
[[1,1,1],[1,2,1],[1,1,1]]
誰もが知っていますか?
私はこのようなPythonで二次元配列を定義:パイソン:2次元リスト内の値の割り当ての混乱
a = [[1]*3]*3
及びI 2であることが一つの要素を割り当てる、等:
a[1][1] = 2
しかし、あることが判明:
代わりに、私はこのように考えたものの[[1,2,1],[1,2,1],[1,2,1]]
:
[[1,1,1],[1,2,1],[1,1,1]]
誰もが知っていますか?
あなたはリストの内包使ってそれを行うことができます。
a=[[1 for _ in range(3)] for _ in range(3)]
a
Out[32]: [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
a[1][1]=2
a
Out[34]: [[1, 1, 1], [1, 2, 1], [1, 1, 1]]
を私は括弧内の持つブラケットが0でなし値の項目を作り、それが最初の内部乗算を開梱/乗算されていることをされていることを考えますあなたの参照a [1] [1]はメタリスト[[1,1 1] * 3]を参照しており、2番目の要素の2番目の要素は2番目の乗算の前に2に切り替わります操作の順序のために発生します。
ええ、私はこの方法がうまくいきます、ありがとうございます!私は本当の理由を別の質問で見つけました。 –