Python中的list.copy()返回相同的引用?
在Python 3中,我有以下代码:Python中的list.copy()返回相同的引用?,python,python-3.x,Python,Python 3.x,在Python 3中,我有以下代码: x = [1, 2, 3, 4] y = x.copy() print(f'{x == y}') 有趣的是,x==y的计算结果是True 但是,只要在x.copy()之后开始x的突变,x==y就会变成False x = [1, 2, 3, 4] y = x.copy() x[2] = 1000 print(f'{x == y}') 这是否意味着,新列表是在第一个列表发生变异后创建的?x.copy()复制x,然后将其分配给yx和y现在是完全不同的变量,指向
x = [1, 2, 3, 4]
y = x.copy()
print(f'{x == y}')
有趣的是,x==y
的计算结果是True
但是,只要在x.copy()
之后开始x
的突变,x==y
就会变成False
x = [1, 2, 3, 4]
y = x.copy()
x[2] = 1000
print(f'{x == y}')
这是否意味着,新列表是在第一个列表发生变异后创建的?x.copy()
复制x
,然后将其分配给y
x
和y
现在是完全不同的变量,指向计算机内存的不同部分,但它们指向的内容是相同的
我认为你的困惑源于你正在做的平等性检查x==y
。这将检查x
的内容与y
的内容,如果它们相等,则返回true。然而,这并不是说它们是同一个变量。尝试此表达式x is y
它将返回False
或id(x)==id(y)
,这也将返回False
,因为这两个变量指向内存中的不同位置
也就是说,当然,当您在将其内容复制到
y
后更改x
时,y
不会受到影响。您创建y,然后修改x,因此x==y
当然是False…我的错。我在自动驾驶仪上,想着参考类型检查参考。不知道是操作员。谢谢你的回答。@CodeScrat还有,没有“引用类型”(或者:所有类型都是引用类型)。