[PYTHON] Supprimer les doublons d'une liste, en gardant l'ordre. [Résolu/Fermé]

Signaler
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
-
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
-
Bonjour tout le monde,

J'ai un petit soucis:

Je souhaite écrire un script pouvant supprimer les doublons d'une liste tout en conservant l'ordre des éléments.

Voici le type de liste sur lesquelles je bosse:
liste = [ 'N', 'MAO', 'MAN', 'O', 'N',  'MAO', 'MAN']


et je veux que le script puisse me retourner la liste de la manière suivante:

liste = ['N', 'MAO', 'MAN', 'O', 'N']
.

Seuls les doublons de TROIS LETTRES doivent être éliminés.

Pouvez-vous m'aider?

Merci d'avance :-)
A voir également:

3 réponses

Messages postés
217
Date d'inscription
dimanche 22 juillet 2012
Statut
Membre
Dernière intervention
1 octobre 2013
55
Bonjour,

Cet algo devrait pouvoir t'aider, tu n'as pu qu'à le faire en python, et les mots clés sont presque les mêmes...

LISTE listeFinale

FOR element IN listeTemporaire {
   IF NOT(LEN(element) == 3 AND element IN listeFinale == TRUE)
      listeFinale.ADD(element)



Cdlt.
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
16
Merci julien !
J'ai pu trouver la solution par moyen ;)
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
16
Pour les curieux, voici mon script-réponse. Il marche mais il n'est pas optimum:

# Initialisation
liste = [ 'N', 'MAO', 'MAN', 'O', 'N',  'MAO', 'MAN']
liste2 = []
liste3 = []


liste2 = [elem for elem in liste if len(elem)>1]
 # Permet de créer une liste avec les éléments à  trois caractères: MAO, MAN,...
 
[liste3.append(elem) for elem in liste2 if not elem in liste3] 
# Crée la même liste que ci-dessus mais sans les doublons

liste.reverse()    # Renverse la liste

                    
# Par cette boucle for on supprime les doublons de liste tout en conservant l'ordre des éléments

for j in range(0, len(liste3)):
      if liste3[j] in liste:
            liste.remove(liste3[j])

liste.reverse() 


>>> print  liste
[ 'N', 'MAO', 'MAN', 'O', 'N']