从python中的特定索引值排序列表

时间:2015-05-15 13:30:19

标签: python list sorting indexing sublist

我想从特定索引中对python列表进行排序。这就是我想要实现的目标。 考虑一个列表al = [1,2,4,3] 现在我要做的是,从最后一个索引开始,返回并交换小于最后一个索引的数字,即索引为1的2。 现在我的列表是[1,3,4,2]

但是,在交换之后我想在交换索引之后对子列表进行排序。 而不是[1,3,4,2] 我想到[1,3,2,4] 在python中有没有办法只对子列表进行排序? 现在,如果我对特定索引使用sort方法,例如: al[2:].sort()它会创建一个新列表,而不是更改它。

2 个答案:

答案 0 :(得分:6)

您可以在切片上使用sorted(),然后将结果分配回切片:

al[2:] = sorted(al[2:])

答案 1 :(得分:0)

如果你想在现场进行,并根据列表中的内容,你可以使用numpy basic indexing使用始终返回原始数组的view

import numpy as np

al = np.array([1, 2, 4, 3])

n = np.where(al < al[-1])[0][-1]
al[n], al[-1] = al[-1], al[n]
al[n+1:].sort()

print(al)
[1 3 2 4]