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)