私はNxN
のリストをpythonで記入しようとしています。 2次元配列として見れば、最初に主対角線が塗りつぶされ、他の操作は他の要素で行われます(ここでは関係ありません)。たとえば、最初にdyn_arr=[[[], [], []], [[], [], []], [[], [], []]]
がある場合は、最初に[[[1], [], []], [[], [1], []], [[], [], [1]]]
に変わります。リストの完全な空リストを任意の順序で埋め込む
dyn_arr = [[[]]* N] * N
idx_set = []
for pointer in range(N):
pointer_pair = [0, pointer]
while pointer_pair[0] < N and pointer_pair[1] < N:
if pointer_pair[0] == pointer_pair[1]:
dyn_arr[pointer_pair[0]][pointer_pair[1]]=[1]
pointer_pair[0] += 1
pointer_pair[1] += 1
しかし、それは[[[1], [1], [1]], [[1], [1], [1]], [[1], [1], [1]]]
を出力します。誰かが何が起こっているのか、私はそれをどのように修正すべきか説明してください。
あなたがそれらのいずれかを変更するときに、あなたが実際にそれらのすべてを変更している、 'N'の回複製され、同一の参照(複数可)を持っています。 – Pythonista
外部サイクルでポインタ_pair [1]を増やすのはなぜですか? – UpmostScarab
@UpmostScarab、私は特定の順序で(斜めに)配列を埋めています。 – Cupitor