Pythonで以下のようなリストをつくりました。
Python
1a =[[0,0,0] for n in range(4)] 2# a:[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] 3 4b = [[0] * 3] * 4 5# b:[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
その後の処理とその結果が次のようになりました。
Python
1a[1][1] = 5 2# [[0, 0, 0], [0, 5, 0], [0, 0, 0], [0, 0, 0]] 3 4b[1][1] = 5 5# [[0, 5, 0], [0, 5, 0], [0, 5, 0], [0, 5, 0]]
なぜ、こんなことになるのでしょう。
リストbの場合も、リストaのような挙動を期待してしまうのですが、そうならない理由がわかりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/03 00:50