在python中创建备份列表
我想用python创建另一个列表的备份列表。下面是一个代码示例在python中创建备份列表,python,list,Python,List,我想用python创建另一个列表的备份列表。下面是一个代码示例 x = [1,2,3] y = x x.pop(0) print y 然而,当我希望它产生[1,2,3]时,这将产生结果y=[2,3]。如何使y列表独立于x列表?一个常见的习惯用法是y=x[:]。这将创建x的浅拷贝,并将其存储在y中 请注意,如果x包含对对象的引用,y也将包含对相同对象的引用。这可能不是你想要的。如果不是,请查看。这里有一种方法: import copy x = [1,2,3] y = copy.d
x = [1,2,3]
y = x
x.pop(0)
print y
然而,当我希望它产生
[1,2,3]
时,这将产生结果y=[2,3]
。如何使y列表独立于x列表?一个常见的习惯用法是y=x[:]
。这将创建x
的浅拷贝,并将其存储在y
中
请注意,如果
x
包含对对象的引用,y
也将包含对相同对象的引用。这可能不是你想要的。如果不是,请查看。这里有一种方法:
import copy
x = [1,2,3]
y = copy.deepcopy(x)
x.pop(0)
print x
print y
从可以看出,虽然aix在这里有最简洁的答案,但为了完整性,您也可以这样做:
y = list(x)
这将强制创建一个新的列表,并使您非常清楚地知道您要做什么。我自己可能会这样做。但是请注意,它不会生成深度副本(因此所有元素都是相同的引用)
如果您想确保y没有发生任何事情,可以将其设置为元组-这将防止删除和添加元素。如果您想这样做:
y = tuple(x)
最后,您可以这样做:
y = [a for a in x]
这是复制的列表理解方法(非常适合进行基本转换或过滤)。实际上,您有很多选择。+1用于复制,因为它可以处理其他对象,而不仅仅是列表
copy.copy
在这种情况下就可以了。别忘了提到l[:]
是一个常见的习惯用法。