Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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中的列表分配行为_Python_List_Sorting_Variable Assignment - Fatal编程技术网

python中的列表分配行为

python中的列表分配行为,python,list,sorting,variable-assignment,Python,List,Sorting,Variable Assignment,来自其他语言的我对列表中Python变量赋值的方式有点困惑。例如,让我们说: x = [4, 5, 2, 70, 1] y = x y.sort() 如果打印x和y,则两个变量的结果相同: x = [1, 2, 4, 5, 70] y = [1, 2, 4, 5, 70] 我没料到会有这种行为。我认为x的顺序不会改变,因为我只对列表y应用了排序方法 另一方面,如果我使用切片操作符将列表x的内容分配给列表y,那么我将实现预期(至少在我的情况下)行为: x = [4, 5, 2, 70, 1]

来自其他语言的我对列表中Python变量赋值的方式有点困惑。例如,让我们说:

x = [4, 5, 2, 70, 1]
y = x
y.sort()
如果打印x和y,则两个变量的结果相同:

x = [1, 2, 4, 5, 70]
y = [1, 2, 4, 5, 70]
我没料到会有这种行为。我认为x的顺序不会改变,因为我只对列表y应用了排序方法

另一方面,如果我使用切片操作符将列表x的内容分配给列表y,那么我将实现预期(至少在我的情况下)行为:

x = [4, 5, 2, 70, 1]
y = x[:]
y.sort()
如果打印x和y,我看到列表x保持不变

x = [4, 5, 2, 70, 1]
y = [1, 2, 4, 5, 70]
有人能解释一下背后的逻辑吗


谢谢大家!

切片生成副本,而赋值将两个标签指向同一列表实例。排序
y
对列表实例进行排序,列表实例与
x
指向的实例相同。或者,您可以使用
y=sorted(x)
来获得您想要的结果。

@MartijnPieters-oops,我已经修复了它。谢谢。可能是第二份