0
votes

Application de méthode ou de fonction sur liste de chaînes avec conditions if

J'ai deux listes comme suit:

for i in range(len(a)):
    for j in range(len(b)):
        if a[i] == b[i]:
            print (a[i])

Je voudrais avoir un print (une fonction ou une méthode plus en général) du a [i] éléments si a [i] == b [j] . C'est le code que j'ai écrit, il ne fonctionne pas car il renvoie quatre fois la condition.

a = ["aaa", "bbb", "ccc"]
b = ["aaa", "bbb", "ddd", "eee"]


2 commentaires

voulez-vous comparer des éléments au même index ou à toutes les combinaisons et voir quelle correspondance. Si ce dernier, qu'en est-il des doublons?


Je ne veux prendre qu'une seule fois


3 Réponses :


1
votes

essayez l'extrait de code suivant:

a = ["aaa", "bbb", "ccc"]
b = ["aaa", "bbb", "ddd", "eee"]

output = [e for e in a if e in b]


0 commentaires

1
votes

Il semble que ce que vous recherchez est une intersection définie.

{'aaa', 'bbb'}

Le résultat est:

a = ["aaa", "bbb", "ccc"]
b = ["aaa", "bbb", "ddd", "eee"]

set(a).intersection(set(b))


2 commentaires

Merci Roy, je n'étais pas au courant de la méthode d'intersection.


Acceptez-vous cela comme une réponse pour les générations futures?



1
votes

Votre problème principal est que vous avez la condition a [i] == b [i] qui devrait être a [i] == b [j] this devrait résoudre le problème


1 commentaires

fournir une solution pour les doublons cependant, comme si seulement cela était corrigé, il y aurait toujours des doublons