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

Résolu
JulienJust Messages postés 149 Date d'inscription   Statut Membre Dernière intervention   -  
JulienJust Messages postés 149 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   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.
0
JulienJust Messages postés 149 Date d'inscription   Statut Membre Dernière intervention   18
 
Merci julien !
J'ai pu trouver la solution par moyen ;)
0
JulienJust Messages postés 149 Date d'inscription   Statut Membre Dernière intervention   18
 
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