2016-10-11 8 views
3

ある程度離れている要素/アイテムだけを取得する必要があります。例えば、私は整数のリストを持っている:リストのフィルタリング。アイテム間の特定の距離だけでリストの要素を取得しますか?

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

はのは、私はお互いの間に少なくとも1000年の距離を持っている持っている要素のみを取得したいと仮定しましょう。リストから 私は出力必要上:それので、それが失敗した

[-2000, 1000, 2000, 3500, 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) 

望ましくない出力を隣接する2つのリスト要素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). 

はどのようにそれを修正するには?

答えて

6

データをソートし、それを行うだろう、以前と比較:

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] 
関連する問題