2015-12-06 63 views
0

我正在寫一個函數來刪除列表中的重複整數,但我不認爲我做到了最有效的方式。有什麼建議麼?是否有更有效的方法來刪除重複的整數

def remove_dups(items): 
    new_list = sorted(items) 
    i_postion = 0 
    if len(new_list) > 1: 
     for i in new_list: 
      counter = 1 
      while counter < len(new_list): 
       if i_postion + counter < len(new_list): 
        if new_list[i_postion] == new_list[i_postion + counter]: 
         new_list.remove(new_list[i_postion + counter]) 
       counter += 1 
      i_postion += 1 

     #A check if the list is only one number multiple times 
     if new_list[0] == new_list[1]: 
      new_list.remove(new_list[1]) 
    else: 
     return(new_list) 

    return(new_list) 
+1

[代碼審查.se] – vaultah

+2

'return list(set(items))'會簡單很多.. –

+0

只需使用set() – Netwave

回答

1

如果你並不需要的順序和列表中的所有元素L是不可改變的,使用一組:

L = [3, 4, 5, 4, 2, 3, 5] 
>>> res = list(set(L))  

如果你需要維持秩序:

res = [] 
seen = set() 
for ele in L: 
    if ele in seen: 
     continue 
    res.append(ele) 
    seen.add(ele) 

>>> res 
[3, 4, 5, 2] 
相關問題