Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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
Arrays python list.sort()函数实际上是如何工作的?_Arrays_Python 3.x_List - Fatal编程技术网

Arrays python list.sort()函数实际上是如何工作的?

Arrays python list.sort()函数实际上是如何工作的?,arrays,python-3.x,list,Arrays,Python 3.x,List,请看以下代码: arr = [5, 4, 3, 2, 1] arr1 = arr arr1.sort() print(arr, arr1) 预期产出为: [5,4,3,2,1][1,2,3,4,5] 因为,arr1正在被排序,而不是arr 尽管如此,输出是: [1,2,3,4,5][1,2,3,4,5] 为什么这两个列表都被排序了?sort()在python中是就地函数,列表是按引用传递的。因此,如果一个数组被排序到位,它也会改变另一个数组 如果要防止出现这种情况,可以使用: arr = ar

请看以下代码:

arr = [5, 4, 3, 2, 1]
arr1 = arr
arr1.sort()
print(arr, arr1)
预期产出为:

[5,4,3,2,1][1,2,3,4,5]

因为,arr1正在被排序,而不是arr

尽管如此,输出是:

[1,2,3,4,5][1,2,3,4,5]

为什么这两个列表都被排序了?

sort()
在python中是就地函数,列表是按引用传递的。因此,如果一个数组被排序到位,它也会改变另一个数组

如果要防止出现这种情况,可以使用:

arr = arr1[:]


arr1=arr
不复制列表。它只是对内存中的同一对象进行新的引用,因此对其中一个对象的更改会反映在另一个对象上。使用
arr1=arr[:]
使用切片表示法复制列表。然后,当您调用
arr1.sort()
时,它只会在适当的位置变异
arr1
,保持
arr
不变。。。。或者
arr=arr1.copy()
,这是执行列表复制的一种明显方式。。。
import copy
arr = copy.deepcopy(arr1)