Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的list.copy()返回相同的引用?_Python_Python 3.x - Fatal编程技术网

Python中的list.copy()返回相同的引用?

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现在是完全不同的变量,指向

在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
,然后将其分配给
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还有,没有“引用类型”(或者:所有类型都是引用类型)。