したがって、次のようにネストした 4 x 3 のネストされたリスト (4 行、3 列) があります。
>>> c= [x[:] for x in [[None]*3]*4]
>>> print c
[[None, None, None],
[None, None, None],
[None, None, None],
[None, None, None]]
この他のSOの質問は、他の方法が機能しない理由をうまく説明しているため、この方法でネストされたリストを初期化しました。(c = [[なし]*3]*4 のように)
今、最初の行のすべての要素を 0 に更新したい。つまり、すべての要素を設定したい
c[0] to 0. So I tried the following:
>>> for x in c[0]: x = 0
...
>>> c
[[None, None, None], [None, None, None], [None, None, None], [None, None, None]]
>>>
ご覧のとおり、要素は更新されていません。ただし、以下は機能しました。
>>> c[0] = [0 for x in c[0]]
>>>
>>> c
[[0, 0, 0], [None, None, None], [None, None, None], [None, None, None]]
0 の新しいリストを作成し、それを c[0] に割り当てているので、そうなることはほぼ確実でした。
とにかく、次に for ループを使用し、最初の列 (つまり、すべての行の最初の要素) を 0 に更新しようとしたところ、うまくいきました。
>>> for x in c: x[0] = 0
...
>>> c
[[0, None, None], [0, None, None], [0, None, None], [0, None, None]]
この for ループの更新は、前の for ループの更新とは異なることを理解しています。最初の更新は単一の要素をループしようとしたのに対し、これはリストをループし、各リストの最初の要素にアクセスするだけだからです。
他の名前を指している名前について何かが欠けていると確信していますが、ここで正確な問題が何であるかを特定することはできません。誰か助けてくれませんか?