在Python的整数列表中对子列表进行排序

时间:2010-09-08 14:45:55

标签: python

我在Python列表中有一个未排序的整数列表。我想在完整列表的子集中排序元素,而不是完整列表本身。我还希望对列表进行排序,以便不创建新列表(我经常这样做)。我最初尝试过

p[i:j].sort()

但是这并没有改变p的内容,大概是因为新的列表被形成,排序,然后扔掉而不影响原始列表的内容。当然,我可以创建自己的排序函数并使用循环来选择适当的元素,但这不会感觉到pythonic。是否有更好的方法对子列表进行排序?

3 个答案:

答案 0 :(得分:17)

您可以撰写p[i:j] = sorted(p[i:j])

答案 1 :(得分:0)

“到位”并不意味着什么。你想要这个。

p[i:j] = list( sorted( p[i:j] ) ) 

答案 2 :(得分:-1)

这是因为p [i:j]返回一个新列表。我能想到这个直接的解决方案:

l = p[i:j]
l.sort()
a = 0
for x in range(i, j):
    p[x] = l[a]
    a += 1