如何比较两个数字列表及其升序?

时间:2018-04-25 18:57:07

标签: python list

我有一个数字列表。然后对每个数字应用一些细微的变化。我想检查他们的升序是否已经改变。有没有一种快速而优雅的方法来实现这一目标?

我目前的做法:

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)))

我觉得我让问题变得更复杂,应该是......

2 个答案:

答案 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:]))