过滤列表。仅在物品之间有一定距离的情况下获取列表元素?

问题描述:

我只需要获得某种程度上彼此远离的元素/项目。例如,我有一个整数列表:过滤列表。仅在物品之间有一定距离的情况下获取列表元素?

data = [-2000, 1000, 2000, 3500, 3800, 4500, 4600, 5000, 6000] 

假设我想只提取具有具有至少彼此之间的距离的那些元素。 从上面的列表中,我需要输出:

[-2000, 1000, 2000, 3500, 4500, 6000] 

我过滤这种方式:

filtered.append(data[0]) 
for index, obj in enumerate(data): 
    if index < (l - 1): 
     if abs(obj - data[index+1]) > 999: 
      filtered.append(data[index+1]) 

print(filtered) 

不希望输出:

[-2000, 1000, 2000, 3500, 6000] 

它失败,因为它比较两个相邻的列表元素,irr尽管有些元素应该被过滤出来而不应该被考虑在内。

让我更清楚地表现出来。
原始列表:[-2000, 1000, 2000, 3500, 3800, 4500, 4600, 5000, 6000]

过滤过程:

-2000 - OK 
1000 - OK 
2000 - OK 
3500 - OK 
3800 - Out 
4500 - Should be OK, but it filtered out compared to 3800. But it should be compared to 3500 (not 3800 which is Out). 

如何解决呢?

对数据进行排序,然后比较以前的会做到这一点:

data = [-2000, 1000, 2000, 3500, 3800, 4500, 4600, 5000, 6000] 

lst = [min(data)]   # the min of data goes in solution list 
for i in sorted(data[1:]): 
    if i-lst[-1] > 999:  # comparing with last element 
    lst.append(i)   # of the solution list 

print (lst) 

输出继电器:

[-2000, 1000, 2000, 3500, 4500, 6000]