我需要一些帮助来理解这段代码:
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
指向内存中的不同位置但这些位置都具有相同的值?(与它们相反,它们都指向内存中的同一个位置,如上所示)
我需要一些帮助来理解这段代码:
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
指向内存中的不同位置但这些位置都具有相同的值?(与它们相反,它们都指向内存中的同一个位置,如上所示)
特别是对于列表,您可以通过获取整个列表的一部分来制作浅拷贝:
x = y[:]
这不能保证适用于任意切片对象(例如,numpy 数组切片不会创建新数组),因此使用内置copy
模块可能很有用:
import copy
x = copy.copy(y)
可以指望为一个任意工作y
。
只需克隆列表:
x = list(y)
制作副本:
>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x = y[:]
>>> y.remove(4)
>>> y
[5, 6]
>>> x
[4, 5, 6]
x = [1,2,3]
y = [4,5,6]
x = y[:]
print x
print y
y.remove(4)
print x
print y
所以 [:] 复制了一个列表。