我想从特定索引中对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()
它会创建一个新列表,而不是更改它。
答案 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]