2010-09-29 5 views
2

Je veux supprimer les doublons dans une liste que lorsqu'un élément est répété plusieurs fois, comme ceci:supprimer des éléments de la liste en double

li = ['Human','Human','Human'] => li = ['Human'] 

mais pas quand il y a deux ou plusieurs éléments différents:

li = ['Human','Monkey','Human', 'Human'] 

Merci beaucoup d'avance.

+0

N'est-ce pas un 'set'? Pourquoi n'utilisez-vous pas un ensemble? –

+0

@ S.Lott: J'ai fait cette erreur aussi, mais lisez la deuxième ligne .. ^^ – poke

+0

@S. Lott. parce qu'il ne veut que les doublons supprimés s'il n'y a qu'une seule valeur distincte dans la liste. commander pourrait également être une préoccupation. – aaronasterling

Répondre

3
def clean(lst): 
    if lst.count(lst[0]) == len(lst): 
     return [lst[0]] 
    else: 
     return lst 

Est-ce que cela fait ce que vous voulez?

si oui, alors vous pouvez le faire en place et

def clean_in_place(lst): 
    if lst.count(lst[0]) == len(lst): 
     lst[:] = [lst[0]] 
+0

Ça marche très bien! btw était comment nettoyer les doublons si les éléments successifs sont identiques, comme ['a', 'a', 'a', 'b', 'a', 'a'] à ['a', 'b', 'a'] – DGT

+0

Parcourez simplement la liste. – poke

3

Vous pouvez le faire facilement avec des jeux comme ci-dessous:

li = list(set(li)) 
2
lst = ['Human','Human','Human'] => lst = ['Human'] 
lst = ['Human','Monkey','Human', 'Human'] => lst = ['Human','Monkey','Human', 'Human'] 

il était faire ce que vous voulez?

if lst.count(lst[0])==len(lst): 
    lst=list(set(lst)) 
    print lst 
else: 
    print lst 
Questions connexes