Python 列表 copy() 方法

Python copy() 语法

copy() 是 Python 列表的一个方法,它用于浅复制(浅拷贝)一个列表。copy() 会创建一个新的列表对象,新列表与原列表拥有相同的元素,但这些元素本身是引用。

如果原列表中的元素是不可变对象(如数字、字符串、元组),那么新旧列表的这些元素是独立的;但如果元素是可变对象(如其他列表、字典、自定义对象),那么新旧列表的这些元素将引用同一个底层对象。

语法:

list.copy()

说明:

list 是一个列表。copy() 方法不接收任何参数,该方法会返回一个新列表。

提示: list.copy() 等价于 list[:]。

Python copy() 摘要

使用频率
修改原列表
时间复杂度 O(n)(n为列表长度)
官方文档 查看

Python copy() 示例

想要复制一个列表,初学小伙伴很容易想到使用 “=” 来实现,比如下面例子。

示例 1:使用 “=” 复制列表

old = ['红', '绿', '蓝']
# 复制列表
new = old
# 修改 new 第 1 个元素
new[0] = 'red'

print(old)
print(new)

运行结果如下。

['red', '绿', '蓝']
['red', '绿', '蓝']

分析:

使用 “=” 复制列表,新列表和旧列表指向的是同一个对象。此时修改任何一个列表的元素,另一个列表的元素也会跟着一起修改。

示例 2:使用 copy() 复制列表

old = ['红', '绿', '蓝']
new = old.copy()
new[0] = 'red'

print(old)
print(new)

运行结果如下。

['红', '绿', '蓝']
['red', '绿', '蓝']

分析:

想要复制一个列表,除了 copy() 方法之外,还可以使用列表切片的方式来实现。请看下面例子。

示例 3:使用切片复制列表

old = ['红', '绿', '蓝']
new = old[:]
new[0] = 'red'

print(old)
print(new)

运行结果如下。

['红', '绿', '蓝']
['red', '绿', '蓝']

Python copy() 注意事项

在Python中,列表 copy() 方法实现的是浅拷贝,而不是深拷贝。

示例 4:copy() 实现的是浅拷贝

old = ['红', '绿', '蓝', ['橙', '黄']]
new = old.copy()
new[3][1] = 'orange'

print(old)
print(new)

运行结果如下。

['红', '绿', '蓝', ['橙', 'orange']]
['红', '绿', '蓝', ['橙', 'orange']]

分析:

从结果可以看到,如果列表元素是一个引用类型。那么修该元素后,另一个元素同样会被修改。

Python copy() 最佳实践

在实际开发中,小伙伴们应该遵循以下最佳实践。

  • 避免使用 “=” 运算符直接赋值,来实现列表的拷贝。
  • 对于简单列表的复制,优先使用 copy() 或 list[:]。
  • 对于含嵌套结构的列表,再考虑使用深拷贝。

上一篇: count()

下一篇: reverse()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号