在python中创建备份列表

时间:2011-05-23 17:31:42

标签: python list

我想在python中创建另一个列表的备份列表。以下是代码示例。

x = [1,2,3]  
y = x  
x.pop(0)  

print y

但是当我希望它产生y = [2,3]时,会产生结果[1,2,3]。我如何使y列表独立于x列表?

3 个答案:

答案 0 :(得分:17)

这是一个常见的习语y = x[:]。这会生成x的浅表副本,并将其存储在y

请注意,如果x包含对象的引用,y也将包含对相同对象的引用。这可能是也可能不是你想要的。如果不是,请查看copy.deepcopy()

答案 1 :(得分:4)

这是一种方法:

import copy

x = [1,2,3]
y = copy.deepcopy(x)
x.pop(0)
print x
print y
来自docs here

答案 2 :(得分:0)

虽然aix在这里有最简约的答案,但为了完整起见,你也可以这样做:

y = list(x)

这将强制创建一个新列表,并清楚地表明您正在尝试做什么。我可能会这样做自己。但请注意 - 它不会进行深层复制(因此所有元素都是相同的引用)。

如果你想确保y发生了什么,你可以把它变成一个元组 - 这将阻止删除和添加元素。如果你想这样做:

y = tuple(x)

作为最后的替代方案,您可以这样做:

y = [a for a in x]

这是复制的列表理解方法(非常适合进行基本的变换或过滤)。所以,你有很多选择。