2015-12-06 3 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] 
Смежные вопросы