我在python中有一个列表,可能看起来像这样:
list_example = [1,2,20,21,22]
如您所见,除了2到20之间的跳跃之外,所有数字都接近它们相邻的列表项。
我如何让Python注意到这个更大的跳转并存储列表项的索引?
答案 0 :(得分:3)
您可以使用zip()
遍历每个i
和i+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)]