python程式設計的細節之列表的複製

2021-10-05 15:17:04 字數 1974 閱讀 2675

方法一:直接幅值

如果直接賦值,這兩個列表是等價的,修改其中任何乙個列表都會影響到另乙個列表。因為python是動態語言,與c這類靜態語言在思想上的不同之處。

old =[1

,[1,

2,3]

,3]new = old

print

('before:'

)print

(old)

print

(new)

new[0]

=3new[1]

[0]=

3print

('after:'

)print

(old)

print

(new)

方法二:copy()

對於list的第一層,是實現了深拷貝,但對於巢狀的list,仍然是淺拷貝。因為內層的list儲存的是位址,複製過去的時候是把位址複製過去了。巢狀的list在記憶體中指向的還是同乙個。

old =[1

,[1,

2,3]

,3]new = old.copy(

)print

('before:'

)print

(old)

print

(new)

new[0]

=3new[1]

[0]=

3print

('after:'

)print

(old)

print

(new)

方法三:for遍歷

通過for迴圈遍歷,將元素乙個個新增到新列表中。這也是乙個淺拷貝方法,只對第一層實現深拷貝。

old =[1

,[1,

2,3]

,3]new =

for i in

range

(len

(old)):

)print

('before:'

)print

(old)

print

(new)

new[0]

=3new[1]

[0]=

3print

('after:'

)print

(old)

print

(new)

方法四:[:]切片

通過使用[:]切片,可以淺拷貝整個列表,只對第一層實現深拷貝。

old =[1

,[1,

2,3]

,3]new = old[:]

print

('before:'

)print

(old)

print

(new)

new[0]

=3new[1]

[0]=

3print

('after:'

)print

(old)

print

(new)

方法五:deepcopy()深拷貝實現

如果用deepcopy()方法,則無論多少層,無論怎樣的形式,得到的新列表都是和原來無關的,這是最安全最清爽最有效的方法,使用時,要匯入copy。

import copy

old =[1

,[1,

2,3]

,3]new = copy.deepcopy(old)

print

('before:'

)print

(old)

print

(new)

new[0]

=3new[1]

[0]=

3print

('after:'

)print

(old)

print

(new)

Python之列表的排序

python方法sort 讓你能夠較為輕鬆地對列表進行排序。假設你有乙個汽車列表,並要讓其 中的汽車按字母順序排列。為簡化這項任務,我們假設該列表中的所有值都是小寫的 cars bmw audi toyota subaru cars.sort print cars audi bmw subaru t...

Python 之列表的方法

列表被建立還可以使用list類的方法簡化操作方法 作用說明 將元素新增到列表的末尾 count elem int 返回元素elem在列表 現的次數 extend other list none 將列表other list中的所有元素追加到當前列表中 index elem int 返回元素elem在列...

python基礎之列表的索引

列表是序列型別的一種資料結構,列表的各個元素用方括號括起來,通過逗號分隔。wang wang 42 列表可以包含其他列表,構成資訊列表,這個列表就是乙個資料庫。wang wang 42 cui cui 43 data wang,cui data wang 42 cui 43 列表中的元素都有編號,順...