Une façon pythonique de comparer deux listes et d'imprimer les différences
J'ai deux listes qui sont garantis d'être de la même longueur. Je veux comparer les valeurs correspondantes dans la liste (à l'exception du premier élément) et imprimer ceux qui ne correspondent pas. La façon dont je le fais, c'est comme cela
i = len(list1)
if i == 1:
print 'Nothing to compare'
else:
for i in range(i):
if not (i == 0):
if list1[i] != list2[i]:
print list1[i]
print list2[i]
Est-il une meilleure façon de le faire? (Python 2.x)
source d'informationauteur randomThought
Vous devez vous connecter pour publier un commentaire.
De sortie:
Edit: Facilement étendu à sauter n premiers éléments (même résultat):
Personne n'est mentionné filtre:
Il y a une belle classe appelée
difflib.SequenceMatcher
dans la bibliothèque standard.edit: oups, ne pas voir le "ignorer premier élément de la partie"
Notant l'exigence d'ignorer la première ligne:
izip
un itérateur (itertools) version dezip
pour générer un itérateur à travers des paires de valeurs. De cette façon, vous n'utilisez pas une charge de la mémoire de la génération d'un complet zippée liste.both
itérateur par un pour éviter de traiter le premier point, et pour éviter d'avoir à faire la comparaison des indices sur chaque étape à travers la boucle. Il rend également plus propre à lire.Vous pourriez utiliser jeux de:
En supposant que les deux types sont égaux et ont la même longueur: