2

Python のリストでの次の異常な動作がわかりません。誰かが光を当てることができれば幸いです。

スニペット 1:

myList = [1,2,3,4]
A = [myList]*3
print(A)
myList[2]=45
print(A)

出力:

[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
[[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]

myList の要素操作から A を「シールド」する追加のコピー関数を実行しなかったので、これは私には理にかなっています。

スニペット 2:

myList = [1,2,3,4]
A = myList*3
print(A)
myList[2]=45
print(A)

出力:

[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

myList への変更が A に反映されないのはなぜですか?

4

1 に答える 1