如何在值而不是内存中使x = y?

时间:2013-05-26 07:09:09

标签: python

我需要一些帮助来理解这段代码:

x = [1,2,3]
y = [4,5,6]
x = y
print x
print y
y.remove(4)
print x
print y  

当我从列表4中删除[4,5,6]时,xy变量都将指向内存中相同的[5,6]列表。 ?
如果是,那么我如何使x等于y列表的副本,以便xy都指向内存中的不同位置,但这些位置都保持不变相同的价值? (相反,他们都指向内存中的同一个位置,如上所示)

4 个答案:

答案 0 :(得分:9)

对于特别是列表,您可以通过整个列表的一部分来制作浅表副本:

x = y[:]

这不能保证适用于任意可切片对象(例如,numpy数组切片不会创建新数组),因此使用内置copy模块会很有用:

import copy
x = copy.copy(y)

可以用于仲裁y

答案 1 :(得分:7)

只需克隆列表:

x = list(y)

答案 2 :(得分:1)

制作副本:

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x = y[:]
>>> y.remove(4)
>>> y
[5, 6]
>>> x
[4, 5, 6]

答案 3 :(得分:0)

x = [1,2,3]
y = [4,5,6]
x = y[:]
print x
print y
y.remove(4)
print x
print y

所以[:]制作一份清单副本。