0
votes

Supprimer des doublons en comparant les soustractions dans une liste

J'ai une liste l = ['AAB', 'CAA', 'ADA'] code>. Je souhaite obtenir la liste suivante sans caractères dupliqués new_l = ['ab', 'ca', 'ad'] code>. J'essaie de parcourir une boucle imbriquée, mais je ne suis pas sûr que ce soit le meilleur moyen d'accomplir cela. Voici mon essai:

new_l = []

for i in range(0,len(l)-1):
    for j in range(0,len(l)-1):
        if l[i][j] != l[i+1][j+1]:
            new_l = ..............


0 commentaires

3 Réponses :


2
votes

Vous pouvez facilement le faire, puisque une chaîne est également une liste. xxx


0 commentaires

1
votes

Set peut gâcher l'ordre des caractères. Meilleur usage ordonnéDict: xxx


6 commentaires

Remarque: dans Python3.7 ou au-dessus de l'ordre des clés est conservé dans des dictionnaires.


@ZAK ZAREYAN Pourriez-vous expliquer votre code depuis .Fromkeys Créer un nouveau dictionnaire commandé avec les clés de la valeur iTable et des valeurs définies sur Valeur. Je n'obtiens pas comment .fromkeys créer un définit de strl


Vous vous joignez par "" caractère (c'est-à-dire par rien) Les touches de commandeDDICT ( joindre méthode ne se rendent que sur les touches) créées à partir de clés (c.-à-d. {' Key1 ': Aucun,' Key2 ': aucun} ).


désolé toujours ne comprend toujours pas pourquoi se joindre par caractère vide supprimera les doublons


CommandéDict fait votre chaîne comme: 'AAB' -> {'A': Aucun, 'B': Aucun} et supprime des doublons. Alors vous rejoignez les clés et obtenez-vous 'ab'


Ok maintenant j'ai compris merci. J'ai essayé le dictionnaire normal et cela fonctionne également car la commande est conservée dans Python 3.7 ou plus.



1
votes
l = ['AAB', 'CAA', 'ADA']
new_l = [''.join(sorted(set(x))) for x in l]
#op
['AB', 'AC', 'AD']

0 commentaires