在python中,我在使用sort函数时遇到了错误
我在使用python的排序函数时遇到了一个问题在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也会得到更改 为了避免这
>>>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)