2016-05-29 80 views
-2

我想刪除Python中的列表中的類似元素,並在不使用set()的情況下在該列表中打印uniques元素。但是,我的代碼不是一樣的。請幫我刪除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 

祝您好運!