1

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

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

4 回答 4

9

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

x = y[:]

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

import copy
x = copy.copy(y)

可以指望为一个任意工作y

于 2013-05-26T07:14:10.710 回答
7

只需克隆列表:

x = list(y)
于 2013-05-26T07:11:41.047 回答
1

制作副本:

>>> x = [1,2,3]
>>> y = [4,5,6]
>>> x = y[:]
>>> y.remove(4)
>>> y
[5, 6]
>>> x
[4, 5, 6]
于 2013-05-26T07:12:39.597 回答
0
x = [1,2,3]
y = [4,5,6]
x = y[:]
print x
print y
y.remove(4)
print x
print y

所以 [:] 复制了一个列表。

于 2013-05-26T20:26:06.087 回答