重複の可能性:
二重ループに関する単純なPythonコード
リストのリストで1つのアイテムを変更するというよく知られた問題に悩まされています。リストの固定サイズのリストを使用する必要があります。
私が使用する場合:
In [21]: a=[[2]*2]*3
In [22]: a
Out[22]: [[2, 2], [2, 2], [2, 2]]
In [23]: a[0][0]=1
In [24]: a
Out[24]: [[1, 2], [1, 2], [1, 2]]
しかし、リストのリストを次のように定義すると、機能します。
In [26]: a = [
....: [2,2],
....: [2,2],
....: [2,2],
....: ]
In [27]: a
Out[27]: [[2, 2], [2, 2], [2, 2]]
In [28]: a[0][0]=1
In [29]: a
Out[29]: [[1, 2], [2, 2], [2, 2]]
私には22行目と27行目は同じように見えます。では、どちらが違いますか?
誰かがこの問題を回避する方法、特にリストのリストの単一の項目を変更するコードを変更する方法を教えてもらえますか?これが不可能な場合、それを可能にする別のデータ構造に移動するための提案はありますか?ありがとう