从列表中排除差异小于80的整数值

时间:2017-11-13 11:28:18

标签: python list

我有一个包含许多值的列表,例如

mylist = [4361, 4868,4878, 5395, 5940, 6539, 6544, 7164 ]

如果我的值差异小于80,例如4868,4878我想排除第二个,只保留4868获取那些的索引被删除。

新的结果列表将是

my_list = [4361, 4868, 5395, 5940, 6539, 7164]

有没有简单的方法来实现这一目标?

2 个答案:

答案 0 :(得分:4)

假设列表已排序,只需将当前值与结果列表中的最后一个值(如果有)进行比较,如果差异足够大,则将其追加。

mylist = [4361, 4868,4878, 5395, 5940, 6539, 6544, 7164 ]
n = 80
result, deleted = [], []
for i, x in enumerate(mylist):
    if result == [] or x - result[-1] > n:
        result.append(x)
    else:
        deleted.append(i)
print(result)  # [4361, 4868, 5395, 5940, 6539, 7164]
print(deleted) # [2, 6]

答案 1 :(得分:0)

这应该可以解决问题:

mylist = [4361, 4868, 4878, 5395, 5940, 6539, 7164]

new = [x for x, y in zip(mylist, mylist[1:]) if y - x >= 80]
if mylist[-1] - new[-2] >= 80:
    new.append(mylist[-1])