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

2024-04-24 21:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含很多值的列表,比如

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

如果有差值小于80的值,比如4868,4878,我想排除第二个值,只保留4868得到被删除的索引

新的结果列表将

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

有没有一个简单的方法来实现这一点


Tags: 方法列表mylistmylist差值
2条回答

这应该可以做到:

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

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

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]

相关问题 更多 >