Kann ich zwei Listen in Python vergleichen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Psus

Freitag 21. November 2003, 16:56

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.
Benutzeravatar
strogon14
User
Beiträge: 58
Registriert: Sonntag 23. Februar 2003, 19:34
Wohnort: Köln
Kontaktdaten:

Freitag 21. November 2003, 17:12

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.
fuvo
User
Beiträge: 14
Registriert: Sonntag 4. Mai 2003, 01:43

Dienstag 25. November 2003, 17:16

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
Antworten