Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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中,我在使用sort函数时遇到了错误_Python_Sorting - Fatal编程技术网

在python中,我在使用sort函数时遇到了错误

在python中,我在使用sort函数时遇到了错误,python,sorting,Python,Sorting,我在使用python的排序函数时遇到了一个问题 >>>d = [23,45,67,5,4,23,45,89] >>>d[5] 23 >>>g = d >>>g.sort() >>>d[5] 45 有没有办法,我可以在不干扰d的情况下对g进行排序。在Python中,列表是可变的,因此,要修复从g=d到g=d[:] 换句话说,当执行g=d时,g指向与d相同的内存地址,并且通过修改g,d也会得到更改 为了避免这

我在使用python的排序函数时遇到了一个问题

>>>d = [23,45,67,5,4,23,45,89]
>>>d[5]
23
>>>g = d
>>>g.sort()
>>>d[5]
45

有没有办法,我可以在不干扰d的情况下对g进行排序。

在Python中,列表是可变的,因此,要修复从
g=d
g=d[:]

换句话说,当执行
g=d
时,
g
指向与
d
相同的内存地址,并且通过修改
g
d
也会得到更改

为了避免这种情况,通过执行
d[:]
复制
d
,将
d
的整个内存复制到新的内存地址

此外,如果您想创建
d
子列表的副本,您应该
d[i:j]
,该子列表将生成一个新列表,其第一个元素是
d
i-th
元素,最后一个元素是
(j-1)-th
元素

记住数字、字符串和元组是不可变的,列表和dict是可变的。
有关详细信息,请参见:

list.sort
排序,并且
g=d
将引用分配给列表而不复制它。排序前将列表复制为
g=d[:]
,或使用内置函数:


请注意,
d=g
对所有对象的行为方式完全相同,无论是否可变。易变性只是提供了一种更明显的方式(总是有
id
/
is
)使这种共享变得明显。
g = sorted(d)