這是一個相當愚蠢的問題,但我真的很困惑。 請看看我的代碼:切片嵌套列表
>>> my_list = [1, 2, 3]
>>> my_list_new = my_list[:]
>>> my_list_new[0] = 100
>>> my_list_new
[100, 2, 3]
>>> my_list
[1, 2, 3]
因此,它的工作原理應該如此。我複製my_list
。當我更改my_list_new
- 只更改了一個列表。
現在看這裏:
>>> my_list2 = [[1, 2, 3], [4, 5, 6]]
>>> my_list_new2 = my_list2[:]
>>> my_list_new2[0][0] = 100
>>> my_list_new2
[[100, 2, 3], [4, 5, 6]]
>>> my_list2
[[100, 2, 3], [4, 5, 6]]
正如你可以看到我改變my_list_new2
,但兩個列表改變。它是嵌套列表的正常Python行爲嗎?如何避免它?
下面有兩個很好的答案。要了解更多信息,請點擊此處:https://docs.python.org/2/library/copy.html#module-copy如果列表嵌套,則需要執行'deepcopy',否則只有對嵌套列表的引用是複製。 –
它看起來像你知道你需要使用切片語法來避免只複製引用,所以我不確定爲什麼你感到驚訝,沒有該語法的「複製」列表 - 即內部 - 只被複製引用。 – TigerhawkT3