2017-07-09 6 views
0

ソートされていないリストから同様の要素を削除する必要があります。同様の要素を取り除いてループで固有の要素を残す

私は、各要素間の差を比較する機能をコード化されてきましたが、それは取得し続けて頭の中で最初に起動するからユニークな要素を残したが、5

の差異内の要素を削除したい

[(579, 271, 97, 114), (580, 271, 97, 114), (578, 272, 97, 114), (579, 272, 97, 114), (580, 272, 97, 114), (581, 272, 97, 114), (577, 273, 97, 114), (578, 273, 97, 114), (579, 273, 97, 114), (580, 273, 97, 114), (581, 273, 97, 114), (582, 273, 97, 114), (577, 274, 97, 114), (578, 274, 97, 114), (579, 274, 97, 114), (580, 274, 97, 114), (581, 274, 97, 114), (582, 274, 97, 114), (577, 275, 97, 114), (578, 275, 97, 114), (579, 275, 97, 114), (580, 275, 97, 114), (581, 275, 97, 114), (578, 276, 97, 114), (579, 276, 97, 114), (580, 276, 97, 114), (581, 276, 97, 114), (579, 277, 97, 114), (22, 460, 97, 114), (23, 460, 97, 114), (133, 460, 97, 114), (134, 460, 97, 114), (21, 461, 97, 114), (22, 461, 97, 114), (23, 461, 97, 114), (24, 461, 97, 114), (132, 461, 97, 114), (133, 461, 97, 114), (134, 461, 97, 114), (135, 461, 97, 114), (20, 462, 97, 114), (21, 462, 97, 114), (22, 462, 97, 114), (23, 462, 97, 114), (24, 462, 97, 114), (131, 462, 97, 114), (132, 462, 97, 114), (133, 462, 97, 114), (134, 462, 97, 114), (135, 462, 97, 114), (136, 462, 97, 114), (20, 463, 97, 114), (21, 463, 97, 114), (22, 463, 97, 114), (23, 463, 97, 114), (24, 463, 97, 114), (131, 463, 97, 114), (132, 463, 97, 114), (133, 463, 97, 114), (134, 463, 97, 114), (135, 463, 97, 114), (136, 463, 97, 114), (20, 464, 97, 114), (21, 464, 97, 114), (22, 464, 97, 114), (23, 464, 97, 114), (24, 464, 97, 114), (131, 464, 97, 114), (132, 464, 97, 114), (133, 464, 97, 114), (134, 464, 97, 114), (135, 464, 97, 114), (136, 464, 97, 114), (21, 465, 97, 114), (22, 465, 97, 114), (23, 465, 97, 114), (132, 465, 97, 114), (133, 465, 97, 114), (134, 465, 97, 114), (135, 465, 97, 114), (22, 466, 97, 114), (133, 466, 97, 114), (134, 466, 97, 114)] 

大。

def compare_remove(input_list): 
    cnt = 0 
    glob_cnt = 0 
    output_list = [input_list[0]] 

    while True: 

     for i in range(len(input_list)): 
      if i <= cnt: 
       print 'jump || ' 
       continue 

      if abs(output_list[cnt][0] - input_list[i][0]) <= 5: 
       if abs(output_list[cnt][0] - input_list[i][0]) == 0: 
        continue 

       print 'skip ||' + str(output_list[cnt]) +' || ' + str(input_list[i]) 
       continue 
      else: 
       print 'append || ' + str(input_list[i]) 
       output_list.append(input_list[i]) 

     print 'loop out || ' 
     input_list = output_list 
     cnt+=1 

     if cnt == 100: 
      break 
     try: 
      output_list[cnt] 
     except: 
      break 

    return output_list 

これは要素の最初の要素を比較し、前の要素との違いを削除します。

+0

があなたの予想出力は何ですか? '5 'の違いは、最初の要素を比較しているように見えます。 – AChampion

+0

@AChampionが尋ねたように、「5の違い」は何ですか?いくつかの例を挙げてください。 –

答えて

0

は、私は質問を理解してかどうかわからないんだけど、ここでは頭の中で最初に起動するからユニークな要素を残しコードがあるが、5

input=[(579, 271, 97, 114), (580, 271, 97, 114), (578, 272, 97, 114), (579, 272, 97, 114), (580, 272, 97, 114), (581, 272, 97, 114), (577, 273, 97, 114), (578, 273, 97, 114), (579, 273, 97, 114), (580, 273, 97, 114), (581, 273, 97, 114), (582, 273, 97, 114), (577, 274, 97, 114), (578, 274, 97, 114), (579, 274, 97, 114), (580, 274, 97, 114), (581, 274, 97, 114), (582, 274, 97, 114), (577, 275, 97, 114), (578, 275, 97, 114), (579, 275, 97, 114), (580, 275, 97, 114), (581, 275, 97, 114), (578, 276, 97, 114), (579, 276, 97, 114), (580, 276, 97, 114), (581, 276, 97, 114), (579, 277, 97, 114), (22, 460, 97, 114), (23, 460, 97, 114), (133, 460, 97, 114), (134, 460, 97, 114), (21, 461, 97, 114), (22, 461, 97, 114), (23, 461, 97, 114), (24, 461, 97, 114), (132, 461, 97, 114), (133, 461, 97, 114), (134, 461, 97, 114), (135, 461, 97, 114), (20, 462, 97, 114), (21, 462, 97, 114), (22, 462, 97, 114), (23, 462, 97, 114), (24, 462, 97, 114), (131, 462, 97, 114), (132, 462, 97, 114), (133, 462, 97, 114), (134, 462, 97, 114), (135, 462, 97, 114), (136, 462, 97, 114), (20, 463, 97, 114), (21, 463, 97, 114), (22, 463, 97, 114), (23, 463, 97, 114), (24, 463, 97, 114), (131, 463, 97, 114), (132, 463, 97, 114), (133, 463, 97, 114), (134, 463, 97, 114), (135, 463, 97, 114), (136, 463, 97, 114), (20, 464, 97, 114), (21, 464, 97, 114), (22, 464, 97, 114), (23, 464, 97, 114), (24, 464, 97, 114), (131, 464, 97, 114), (132, 464, 97, 114), (133, 464, 97, 114), (134, 464, 97, 114), (135, 464, 97, 114), (136, 464, 97, 114), (21, 465, 97, 114), (22, 465, 97, 114), (23, 465, 97, 114), (132, 465, 97, 114), (133, 465, 97, 114), (134, 465, 97, 114), (135, 465, 97, 114), (22, 466, 97, 114), (133, 466, 97, 114), (134, 466, 97, 114)] 
srt_input=sorted(input) 
mini=srt_input[0][0] 
output=[srt_input[0]] 
for i in srt_input: 
    if i[0]<=mini+5:continue 
    mini=i[0] 
    output.append(i) 
print(output) 
--------- 
[(20, 462, 97, 114), (131, 462, 97, 114), (577, 273, 97, 114)] 

あなたの相違内の要素を削除します最小値を選択するだけで、次の頭部がある場合は無視します<は頭部+ 5を選択します。
これがあなたの望むものでない場合は、どの出力を期待しているか教えてください。あなただけの重複を削除しようとしている場合

+0

thx!これは私が欲しかったものです!正常に動作します。他の添付ファイルが必要ですが、私はそれを管理できます! – KyonP

0

、あなたはこれを試すことができます。

tosort = [ 5, 6, 7, 21, 5, 9, 6, 9] 
seen = [] 
for num in tosort: 
    if not (num in seen): 
     seen.append(num) 
print(seen) 
+0

thxですが、実際には「重複」していません。 – KyonP

関連する問題