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

Sort list from a specific index value in python

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

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

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

如果您想就地进行并取决于列表中的内容,您可以使用 numpy where basic indexing using always returns a view of the original array:

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]