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

时间:2014-07-13 11:41:47

标签: python sorting

使用python的sort函数时遇到了问题。

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

有什么办法,我可以在不打扰d的情况下进行排序。

2 个答案:

答案 0 :(得分:6)

list.sortin-place进行排序,g = d分配对列表的引用而不复制它。在排序之前将列表复制为g = d[:],或者使用内置函数sorted代替:

g = sorted(d)

答案 1 :(得分:2)

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

换句话说,在执行g = d时,g指向d执行的相同内存地址,并且通过修改gd也会获得变化。

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

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

记住数字,字符串和元组是不可变的,列表和字符串是可变的。 有关详情,请参阅:http://ilian.i-n-i.org/python-interview-question-and-answers/#sthash.2WW5LTOA.dpuf