3 回答

隔江千里
TA貢獻1906條經驗 獲得超10個贊
假設現有列表為a, 復制一個新列表為b。
用 b=a 這個語句,并不會復制出一個新的列表,只是復制了列表的地址。
無論是對a還是b進行修改,影響的都是同一個列表。
我們需要使用copy模塊中的deepcopy函數:
123 | import copy a = [ 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
提交
取消