Les Allergies
Alimentaires
Posez votre question Signaler

Suprimer les doublon d'une liste en python [Résolu]

leonard da vinci - Dernière réponse le 14 avril 2009 à 19:23
bonjour a tous
je cré dans un script une liste de lien
mon probleme est que je ne sais virer les doublons de la liste
merci pour toute aide
Lire la suite 

Suprimer les doublon d'une liste en python »

11 réponses
Réponse
+10
moins plus
Oui il y a plus simple en une seule ligne : list(set(maliste))

>>> l = [1,2,3,4,5,4,65,43,3,4,34,54,3,4,1,3,13,1,2]
>>> list(set(l))
[1, 2, 3, 4, 5, 65, 43, 34, 13, 54]
>>>
raspoute- 13 févr. 2009 à 11:02
Bonjour,

voilà une solution adaptée aux chaînes

p='L45446'
p1=''
for el in p:
    if el in p1:
        pass
    else:
        p1+=el
print p1

Lou352Lou - 13 févr. 2009 à 11:05
ne vous embêtez pas à me répondre, j'ai trouvé ma solution, merci et bonne journée à tous.

Lou
David - 12 avril 2009 à 15:49
oui c bien ? mais quand ta liste contient une sous liste sa marche pas ?

Exp: G=[['1','2'],['1','2'], ['10','2']]

ni int() ni sort() ne marche aussi

dommage

j'essaye de régler ça avec des boucles, ça bug !

a+
Ajouter un commentaire
Réponse
+2
moins plus
Pour les versions de Python sans le type set().
>>> l = [1,2,3,4,5,4,65,43,3,4,34,54,3,4,1,3,13,1,2]
>>> dict().fromkeys(l).keys()
[1, 2, 3, 4, 5, 65, 43, 34, 13, 54]
Ajouter un commentaire
Réponse
+2
moins plus
Salut,sous
Pour un résultat trié il suffit de passer le résultat à sorted, comme montré ci-des :

>>> l = [1,2,3,"L","A","B","Z",4,5,4,65,43,3,"H",4,34,54,3,4,1,3,13,1,2]
>>> sorted(list(set(l)))
[1, 2, 3, 4, 5, 13, 34, 43, 54, 65, 'A', 'B', 'H', 'L', 'Z']
>>>
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

Il faut créer une liste secondaire qui ajoute au fur et à mesure les occurences de ta liste de liens puis tu compares. Si l'occurence existe déjà tu supprimes le premier élément doublon de ta liste de lien.

Tu peux aussi créer une variable témoin et l'utiliser dans une boucle pour faire un truc comme:
S'il ya eu des doublons dans la dernière vérification alors on recommence une vérification, sinon on arrête (comme ça si tu as des triplons, des quadriplons ou pire, ça marchera quand même).

Exemple:
# Ta liste de liens
liste=['truc','machin','bidule','truc','truc','bidule','machin','truc','bidule','bidule','truc','machin']

# La variable témoin
doublon_existe=True


while doublon_existe==True:

     # On réinitialise la variable témoin à "Faux" pour partir du fait qu'il n'ya pas encore de doublons
    doublon_existe=False

     # Liste secondaire qui ajoutera les éléments de ta liste de liens au fur et à mesure
    liste_verif=[]    

    # On parcoure ta liste de lien et on compare avec la liste secondaire
    for lien in liste:
        try:
            doublon=liste_verif.index(lien)
            liste.remove(lien)
   
             # Comme il ya un doublon, on met la variable témoin à vrai pour recommencer une vérification la prochaine fois
            doublon_existe=True
        
        # Pas de doublon pour cet élément de la liste : on ne fait rien
        except:
            pass
        
        # On ajoute le lien en cours dans la liste secondaire pour le comparer ensuite avec les prochains éléments de la liste de liens    
        liste_verif.append(lien)


print liste


Je sens que j'explique mal. Et il ya peut être plus simple. Mais ça marche....
Ajouter un commentaire
Réponse
+1
moins plus
Il y a plus simple :
liste=['truc','machin','bidule','truc','truc','bidule','machin','truc','bidule','bidule','truc','machin']
liste2=[]

for elt in liste:
   try:
      ind = liste2.index(elt)
   except:
      liste2.append(elt)
Ajouter un commentaire
Réponse
-3
moins plus
merci kilian
10/10
Ajouter un commentaire
Ce document intitulé « suprimer les doublon d'une liste en python » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?