Skip to content

复制列表

在 Python 中,我们可以创建一个对象(数据)并使用赋值运算符 (=) 将其引用绑定到一个变量。

由于多个集合或集合中的项可以指向同一个可变对象,因此需要一个副本来更改一个副本而不更改另一个副本。

让我们举个例子:

python
>>> old_l = [1, 2, 3]

#将旧列表复制到新列表
>>> new_l = old_l

#检查两个列表是否指向同一个对象
>>> id(new_l)==id(old_l)
True

#向新列表添加元素
>>> new_l.append(4)
>>> new_l
[1, 2, 3, 4]
>>> old_l
[1, 2, 3, 4]

可以看出,赋值运算符并未创建列表的新副本

可以使用 copy() 方法创建包含原始列表项的新 list

python
>>> old_l = [1, 2, 3]

#将旧列表复制到新列表
>>> new_l = old_l.copy()

#检查两个列表是否指向同一个对象
>>> id(new_l)==id(old_l)
False

#向新列表添加元素
>>> new_l.append(4)
>>> new_l
[1, 2, 3, 4]
>>> old_l
[1, 2, 3]

赋值整个列表的切片 ([:]) 也等效于创建新副本。

python
>>> old_l = [1, 2, 3]

#使用切片表示法将旧列表复制到新列表
>>> new_l = old_l[:]

#检查两个列表是否指向同一个对象
>>> id(new_l)==id(old_l)
False

#向新列表添加元素
>>> new_l.append(4)
>>> new_l
[1, 2, 3, 4]
>>> old_l
[1, 2, 3]