Seite 1 von 1

Kann ich zwei Listen in Python vergleichen?

Verfasst: Freitag 21. November 2003, 16:56
von Psus
Ich würde gerne Wissen ob es in Python möglich ist zwei Listen zu vergleichen und die Abweichungen in einer anderen Liste zu speichern?
Für Support wäre ich dankbar.

M.f.G
Psus

PS(an x-Herbert gerichtet):Ich habe das gemeint was ich geschrieben habe und es funktioniert auch.

Verfasst: Freitag 21. November 2003, 17:12
von strogon14
Das heißt, Du möchtest wissen, welche Elemente sich in zwei Listen unterscheiden?
Dazu gibt seit neuestem in Python 2.3 das Modul sets.

Wenn Du nicht nur wissen willst, welche Elemente unterschiedlich sind, sondern auch an welcher Stelle sich die Listen unterscheiden, musst Du wohl "von Hand" über die Listen iterieren.

Code: Alles auswählen

l1 = [1,2,3,4,5,6]
l2 = [1,2,0,4,5,6]

l3 = []
for i in xrange(len(l1)):
    if l1[i] <> l2[i]:
        l3.append((i, l2[i]))
... speichert in l3 alle Werte aus l2, die sich gegenüber l1 verändert haben mit ihrem Index. Geht natürlich davon aus, dass l1 und l2 gleiche Länge haben, kann man aber leicht so anpassen, dass das keine Rolle spielt.

Verfasst: Dienstag 25. November 2003, 17:16
von fuvo
Hi,

Die ungleichen Paare (allerdings ohne den Index) bekommst Du so:

Code: Alles auswählen

filter(lambda x: x[0]!=x[1], zip(l1, l2))
Dabei ist es egal, ob die Listen gleich lang sind, die Ergebnisliste hat aber maximal die Länge min(len(l1), len(l2)).

Für ungleichlange Listen geht folgendes:

Code: Alles auswählen

filter(lambda x: x[0]!=x[1], map(None, *(l1, l2)))
Viele Grüße, Volker