我需要一些帮助来理解这段代码:
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]
时,x
和y
变量都将指向内存中相同的[5,6]
列表。 ?
如果是,那么我如何使x
等于y
列表的副本,以便x
和y
都指向内存中的不同位置,但这些位置都保持不变相同的价值? (相反,他们都指向内存中的同一个位置,如上所示)
答案 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
所以[:]制作一份清单副本。