2016-05-29 9 views
-2

Pythonのリストから同様の要素を削除し、そのリストのuniques要素をset()を使わずに印刷したいと考えています。しかし、私のコードは同じことをしていません。私を助けてくださいPythonのリストから同様の要素を削除する

私のコード

T = int(raw_input()) 
a=[] 
for i in range(0,T): 
    a.append(raw_input()) 
for i in range(len(a)): 
    for j in range(i+1, len(a)): 
     if a[i]==a[j]: 
      del a[j] 
print a 
+0

これはなんですか?どのようなアウトプットを得るのですか?リストの長さを反復する間に長さを変更することは悪い考えです。 – jonrsharpe

+0

[リストの重複を削除する]の可能な複製(http://stackoverflow.com/questions/7961363/removing-duplicates-in-lists ) – rsm

答えて

1

使用削除:

T = int(raw_input()) 
a=[] 

for i in range(0,T): 
    a.append(raw_input()) 


for i in range(len(a)): 
    for j in range(i+1, len(a)): 
     if a[i]==a[j]: 
      a[j]='' 


while '' in a: 
    a.remove('') 

print a 

は、私の解決策を試してみてください、というよりも、あなたがそれと空の文字列と、それを削除するよりも作ることができる要素を削除します削除するとリストのインデックスが範囲外になる可能性があります。

+0

:ありがとう、これで私を助けてくれるよ –

4
a = [1, 2, 3, 4, 3, 5, 2] 
a = [x for i, x in enumerate(a) if x not in a[:i]] 
print(a) # [1, 2, 3, 4, 5] 

古いコレクションから削除するのではなく、新しいコレクションを作成する方がよい場合があります。この場合、元のリストに含まれていない要素が含まれています。

+0

あなたのコードがうまくいく –

2

削除していない場合は、この使用することができます:

yourList = [12, 121, 51, 132, 12, 44, 44, 51] 

newList = [v for i,v in enumerate(yourList) if yourList.index(v) == i] 
print newList 

幸運を!

関連する問題