Python测试列表项是否相隔很远

时间:2018-05-06 10:39:23

标签: python python-3.x python-2.7

我在python中有一个列表,可能看起来像这样:

list_example = [1,2,20,21,22]

如您所见,除了2到20之间的跳跃之外,所有数字都接近它们相邻的列表项。

我如何让Python注意到这个更大的跳转并存储列表项的索引?

4 个答案:

答案 0 :(得分:3)

您可以使用zip()遍历每个ii+1元素,然后计算两个相邻元素之间的差异。

for a, b in zip(list_example, list_example[1:]):
    diff = b - a
    if diff > 10:
        print("Jump between %d and %d" % (a, b))

但是,由你决定什么是"跳跃"。

如果您需要索引,可以使用enumerate()

for i, (a, b) in enumerate(zip(list_example, list_example[1:])):
    ...

答案 1 :(得分:1)

你可以得到元素之间的平均距离,然后输出那些到最后一个元素的距离大于那个平均值的索引。

SeekableByteBuffer

答案 2 :(得分:1)

你需要一个设定数字,它是设置跳跃的数字。 这意味着循环比较当前号码与其邻居,并在数字与您设置的跳跃号码不同时发出警报。

这是假设您的列表已经排序。

答案 3 :(得分:1)

假设值按升序排列(如您的示例),您可以创建(DIFF, INDEX)对的排序列表。

xs = [1, 2, 20, 21, 22]
pairs = sorted((xs[i] - xs[i-1], i) for i in range(1, len(xs)))

print(pairs)  # [(1, 1), (1, 3), (1, 4), (18, 2)]