我想在python中创建另一个列表的备份列表。以下是代码示例。
x = [1,2,3]
y = x
x.pop(0)
print y
但是当我希望它产生y = [2,3]
时,会产生结果[1,2,3]
。我如何使y列表独立于x列表?
答案 0 :(得分:17)
这是一个常见的习语y = x[:]
。这会生成x
的浅表副本,并将其存储在y
。
请注意,如果x
包含对象的引用,y
也将包含对相同对象的引用。这可能是也可能不是你想要的。如果不是,请查看copy.deepcopy()
。
答案 1 :(得分:4)
答案 2 :(得分:0)
虽然aix在这里有最简约的答案,但为了完整起见,你也可以这样做:
y = list(x)
这将强制创建一个新列表,并清楚地表明您正在尝试做什么。我可能会这样做自己。但请注意 - 它不会进行深层复制(因此所有元素都是相同的引用)。
如果你想确保y发生了什么,你可以把它变成一个元组 - 这将阻止删除和添加元素。如果你想这样做:
y = tuple(x)
作为最后的替代方案,您可以这样做:
y = [a for a in x]
这是复制的列表理解方法(非常适合进行基本的变换或过滤)。所以,你有很多选择。