[PYTHON] Supprimer les doublons d'une liste, en gardant l'ordre.

Résolu/Fermé
JulienJust Messages postés 139 Date d'inscription mardi 25 juin 2013 Statut Membre Dernière intervention 2 septembre 2014 - 19 août 2013 à 14:05
JulienJust Messages postés 139 Date d'inscription mardi 25 juin 2013 Statut Membre Dernière intervention 2 septembre 2014 - 21 août 2013 à 10:26
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

juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
19 août 2013 à 15:03
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.
0
JulienJust Messages postés 139 Date d'inscription mardi 25 juin 2013 Statut Membre Dernière intervention 2 septembre 2014 18
Modifié par JulienJust le 20/08/2013 à 11:33
Merci julien !
J'ai pu trouver la solution par moyen ;)
0
JulienJust Messages postés 139 Date d'inscription mardi 25 juin 2013 Statut Membre Dernière intervention 2 septembre 2014 18
21 août 2013 à 10:26
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']
0