在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

我想用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.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[:]
是一个常见的习惯用法。