📅  最后修改于: 2023-12-03 15:24:41.504000             🧑  作者: Mango
在 Python 中,列表是一种非常常用的数据类型。在很多情况下,我们需要复制一个列表,有时候是为了修改不同的副本,有时候是为了备份。
下面介绍几种常见的复制列表的方法。
使用切片可以很方便地复制一个列表。切片语法是 list[start:end]
,其中 start
和 end
分别表示切片的起始和结束位置。如果省略了 start
,则默认从起点开始;如果省略了 end
,则默认到结尾结束。
a = [1, 2, 3]
b = a[:] # 复制整个列表
使用列表推导式也可以很方便地复制一个列表。列表推导式的语法是 [expr for val in collection]
,其中 expr
是一个表达式,collection
是一个可迭代对象。这个表达式将会被执行多次,每次都将 collection
中的一个元素赋值给 val
,并返回一个结果,最后将所有结果组成一个新的列表。
a = [1, 2, 3]
b = [x for x in a] # 复制整个列表
Python 中的列表对象有一个 copy()
方法,可以返回一个新的列表对象,其中包含了原列表对象中的所有元素。
a = [1, 2, 3]
b = a.copy() # 复制整个列表
如果列表中的元素也是可变对象(例如另一个列表或字典),则使用上面的方法只会复制元素的引用,而不是创建新的对象。为了完全复制一个列表,我们需要使用 copy
模块里的 deepcopy()
方法,它可以递归地复制所有的元素。
import copy
a = [[1, 2], [3, 4]]
b = copy.deepcopy(a) # 完全复制整个列表
上面就是四种常见的复制列表的方法,选择哪种方法取决于具体的需求。切片适用于简单的情况,列表推导式适用于需要对元素进行加工的情况,copy()
方法适用于一维列表,deepcopy()
方法适用于多维列表。