J'ai deux listes Python Maintenant, j'ai utilisé Cela m'a donné la sortie suivante p>
Le mot Y a-t-il un moyen d'éviter cela et d'obtenir la sortie suivante? p>
L'ordre de la liste est important. C'est pourquoi j'ai utilisé __ contient __ et non intersection. P>
Mon souci n'est pas la présence d'entrées en double dans la liste des mots communs. J'essaie d'éviter la même entrée dans Match1 CODE> et MATCH2 CODE> P>
match1 code> = ['Soumettre', "Paper", "Erreur", "Code", "NotComplete", "Next"] P> P> P> P>
match2 code> = ["Soumettre", "papier", "erreur", "code", "bloqué", "papier", "code"] p>
__ contient __ code> pour trouver les mots communs entre match1 code> et match2 code> p> p>
commun = filtre (ensemble (match1) .__ Contient __, Match2) Code> P>
impression (liste (commune)) code> p>
['Soumettre', 'Paper', "Erreur", "Code", "Papier", "Suivant"] P> P>
papier code> dans la deuxième liste correspond à nouveau avec le mot papier code> dans la première liste. p>
['Soumettre', 'Paper', "Erreur", "Code", "Suivant"] Code> P>
Match1 CODE> être assortie à nouveau avec une autre entrée dans match2 code>. Si les deux listes avaient deux 'papier' code>, je le prendrais dans la liste commune comme entrées distinctes. P>
5 Réponses :
Et si vous supprimez simplement les duplicats en utilisant:
print(list(dict.fromkeys(list(common)))
Vous pouvez utiliser une compréhension de liste, puis exécuter cela via SET () CODE> match1 = ['Submit' , 'paper' , 'error' , 'code' , 'notcomplete' , 'next']
match2 = ['Submit' , 'paper' , 'error' , 'code' , 'blocked', 'paper' , 'next']
print(set([x for x in match1 if x in match2]))
Merci pour votre réponse. Je voudrais garder l'ordre de la liste et c'est pourquoi j'ai utilisé __ contient __. J'ai ajouté une édition.
Vous pouvez convertir la liste en définissant, puis utiliser la fonction d'intersection dans Définissez pour rechercher les mots courants.
match1 = ['Submit' , 'paper' , 'error' , 'code' , 'notcomplete' , 'next'] match2 = ['Submit' , 'paper' , 'error' , 'code' , 'blocked', 'paper' , 'next'] match1_set = set(match1) match2_set = set(match2) print(match1_set.intersection(match2_set))
Merci pour votre réponse. Malheureusement, je n'étais pas suffisamment spécifique sur l'exigence de garder la liste de la liste. J'ai ajouté une édition.
Bonjour Krishnadas Bienvenue sur Stackoverflow,
Vous pouvez convertir les listes en ensembles qui sont des structures de données qui ne permettent pas de les dupliquer. Je vois que vous l'avez utilisé sur match1 code> mais vous pouvez également les utiliser sur match2 code>: p>
Merci pour votre réponse. Je voudrais garder l'ordre de la liste et c'est pourquoi j'ai utilisé __ contient __. J'ai ajouté une édition.
J'ai pu trouver une réponse pour cela. P>
donne p>
Merci à tous ceux qui ont aidé. P> Match1 = ['Soumettre', 'Paper', "Erreur", "Code", "NotCommlete '", "Suivant"] P> P>
match2 = ["Soumettre", "Papier", "Erreur", "Code", "Bloqué", "Papier", "Suivant"] P> P>
commun = liste (filtre (match1 .__ contient __, match2)) code> p>
commun_final = [w pour w dans match1 si w en commun] code> p>
impression (commun_final) code> p>
['Soumettre', 'Paper', "Erreur", "Code", "Suivant"] Code> P>
Utilisez un ensemble pour les deux variables:
Filtre (SET (Match1) .__ Contient __, SET (Match2)) CODE>Voulez-vous avoir des éléments répétés dans la liste ou non
@ProGrammerPro Je voudrais garder l'ordre de la liste et la répétation n'a pas d'importance, sauf si cela ne correspond pas à un mot qui a déjà été déjà assorti.