J'essaie de comprendre la manière dont les compréhensions fonctionnent. P>
Je voudrais faire boucler deux listes et comparer chacun pour trouver des différences. Si un ou plusieurs mots sont différents, je voudrais imprimer ce mot (s). P>
3 Réponses :
Si vous souhaitez comparer deux listes pour les différences, je pense que vous souhaitez utiliser un définir code> strong>
.
>>> [word for word in L1 if word not in L2] + [word for word in L2 if word not in L1] ['a', 'e']
C'est une bonne suggestion et je l'utiliserai de manière défait. Mais dans ma quête pour en apprendre davantage sur les complètes, je devais donner ma petite tique à Überjesus ... à moins que je ne puisse donner plus d'un, n'ont pas essayé ça
Je crois comprendre que les éléments peuvent répéter et l'ordre est important. De cette façon, l'utilisation de définir code> ne produit pas de résultats corrects.
Le faire dans "une belle ligne de code" est le golf du code et égaré. Rendez-le à la place.
[print(a, "is different from", b) for a, b in zip(list1, list2) if a!=b]
Je suis d'accord, c'est plus facile à lire mais je fais de cette façon pour un peu de temps et je suis ennuyé de cela. Pas la méthode Zip Tho, merci de me montrer cela. Si ces voies plus courtes ... je pourrais aussi l'apprendre ... pourrait être utile
Non, il n'y a pas de moyen plus courte de faire cette comparaison. Les autres solutions ont une vue différente de la "différence". Ce qui est juste dépend de vous. Être ennuyé d'écrire un bon code pourrait ne pas être une bonne raison. ;)
Comme quelqu'un apprenant Python cette semaine, j'apprécie votre réponse et la clarté de votre code. Bon produit!
Cela fonctionne bien si les deux listes ont la même taille. Et si la liste A est très grande que la liste B?
Le 2e code SNIPPET est significativement différent de celui-ci construit une liste inutile de Aucun code> renvoyé par les appels d'impression - il s'agit d'un pythonic, la liste Comphrensions est destinée aux listes de construction et non à des appels procédales.
Comme Kriegar suggéra d'utiliser des ensembles est probablement la solution la plus facile. Si vous avez absolument besoin d'utiliser la compréhension de la liste, j'utiliserais quelque chose comme ceci: