Python 正確複製列表的方法

2021-10-20 20:55:46 字數 1587 閱讀 3537

[python] 正確複製列表的方法

python沒有c語言中的變數。在c語言中,變數不止是個名字,它是位元組集合並真實存在於記憶體某個位置上。而在python中,變數僅僅是指向物件的標籤。

看看以下語句:

a = [1, 2, 3]

它表示我們建立了乙個指引指向列表[1, 2, 3],但是a不是列表。如果:

b = a

我們並沒有複製a所指引的列表。我們只是建立了乙個新的標籤b,然後將其指向a所指向的列表。

如果你修改a,那你就同時修改了b,因為它們指向同乙個列表:

>>

> a =[1

,2,3

]>>

> b = a

>>4)

>>

>

print a[1

,2,3

,4]>>

>

print b[1

,2,3

,4]

內建函式id()可以返回物件的唯一id。該id是物件的記憶體位址。

>>

>

id(a)

3086056

>>

>

id(b)

3086056

>>

> c =

# create a new list

>>

>

id(c)

2946712

五種複製方法的比較

>>

>

import copy

>>

> a =[[

10],20

]>>

> b = a[:]

>>

> c =

list

(a)>>

> d = a *

1>>

> e = copy.copy(a)

>>

> f = copy.deepcopy(a)

>>21)

>>

> a[0]

11)>>

>

print

id(a)

, a30553152[[

10,11]

,20,21

]>>

>

print

id(b)

, b44969816[[

10,11]

,20]>>

>

print

id(c)

, c44855664[[

10,11]

,20]>>

>

print

id(d)

, d44971832[[

10,11]

,20]>>

>

print

id(e)

, e44833088[[

10,11]

,20]>>

>

print

id(f)

, f44834648[[

10],20

]

Python 正確複製列表的方法

new old python老鳥都知道以上 是什麼意思。它複製列表old到new。它對於新手來說是種困惑而且應該避免使用這種方法。不幸的是 標記法被廣泛使用,可能是python程式設計師不知道更好的列表複製法吧。首先我們需要了解python是如何管理物件和變數。python沒有c語言中的變數。在c語...

python 複製列表的不同方法

import copy a 10 20 b a c list a d a 1 e copy.copy a f copy.deepcopy a print id a a 30553152 10,11 20,21 print id b b 44969816 10,11 20 print id c c 4...

python列表的複製

熟悉python的朋友都知道,與其說在python中給變數賦值,倒不如說是給值貼標籤。為什麼這麼說,因為當我使用諸如 a b 這種操作時,python並沒有為把b的複製給a,而是把a這個標籤貼在了b標籤貼在的變數上。那麼當我有乙個列表,我想修改它並產生乙個副本但是卻不改變原來的列表的時候,就必須去複...