我有一个数字列表。然后对每个数字应用一些细微的变化。我想检查他们的升序是否已经改变。有没有一种快速而优雅的方法来实现这一目标?
我目前的做法:
pack_before = list(zip(range(len(list_before)), list_before))
pack_after = list(zip(range(len(list_after)), list_after))
pack_before.sort(key=lambda x: x[1])
pack_after.sort(key=lambda x: x[1])
sorted_idx_before = np.array([pack[0] for pack in pack_before])
sorted_idx_after = np.array([pack[0] for pack in pack_after])
sum((int(e0==e1) for (e0,e1) in zip(sorted_idx_before, sorted_idx_after)))
我觉得我让问题变得更复杂,应该是......
答案 0 :(得分:1)
如果列表是numpy数组
,则有效isSorted = (list_of_numbers[:-1] <= list_of_numbers[1:]).all()
转换为numpy:
import numpy as np
list_of_numbers = np.asarray(list_of_numbers)
答案 1 :(得分:1)
这是一种检查修改后的列表是否按线性时间排序的方法:
all(x <= y for x,y in zip(yourList, yourList[1:]))