从 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]
我想根据特定索引对 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]