我有一个包含许多值的列表,例如
mylist = [4361, 4868,4878, 5395, 5940, 6539, 6544, 7164 ]
如果我的值差异小于80,例如4868,4878
我想排除第二个,只保留4868
和获取那些的索引被删除。
新的结果列表将是
my_list = [4361, 4868, 5395, 5940, 6539, 7164]
有没有简单的方法来实现这一目标?
答案 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])