3 回答
隔江千里
TA貢獻1906條經驗 獲得超10個贊
假設現有列表為a, 復制一個新列表為b。
用 b=a 這個語句,并不會復制出一個新的列表,只是復制了列表的地址。
無論是對a還是b進行修改,影響的都是同一個列表。
我們需要使用copy模塊中的deepcopy函數:
| 123 | import copya=[1, 2, 3]b=copy.deepcopy(a) |
這時的b才是一個列表,而不是列表的地址了。
慕姐8265434
TA貢獻1813條經驗 獲得超2個贊
提問者這么短的描述,有點無法看懂,那就按照通常的幾種方法來說吧:
簡單列表的拷貝
已知一個列表,求生成一個新的列表,列表元素是原列表的復制
a=[1,2]
b=a這種其實并未真正生成一個新的列表,b指向的仍然是a所指向的對象。
后果:如果對a或b的元素進行修改,a,b的值同時發生變化。
可以使用以下方法解決:
a=[1,2]
b=a[:]這樣修改a對b沒有影響。修改b對a沒有影響。
復雜列表的拷貝:
可以使用copy模塊中的deepcopy函數。修改測試如下:
import copy
a=[1,[2]]
b=copy.deepcopy(a)
海綿寶寶撒
TA貢獻1809條經驗 獲得超8個贊
import?copy?a?=?[1,?2,?3]?#引用b?=?a?#淺拷貝c?=?copy.copy(a)?#深拷貝d?=?copy.deepcopy(a)?#列表解析e?=?[i?for?i?in?a] |
以上幾種都姑且可以稱為復制,但也有一些區別
添加回答
舉報
0/150
提交
取消
