复制列表
在 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]