我在Python列表中有一个未排序的整数列表。我想在完整列表的子集中排序元素,而不是完整列表本身。我还希望对列表进行排序,以便不创建新列表(我经常这样做)。我最初尝试过
p[i:j].sort()
但是这并没有改变p的内容,大概是因为新的列表被形成,排序,然后扔掉而不影响原始列表的内容。当然,我可以创建自己的排序函数并使用循环来选择适当的元素,但这不会感觉到pythonic。是否有更好的方法对子列表进行排序?
答案 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