vergleiche listen

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
monjiji
User
Beiträge: 2
Registriert: Freitag 21. März 2008, 09:44

Freitag 21. März 2008, 09:55

Hallo zusammen,

bin Python-Anfänger und habe ein Problem.
Ich lese aus einem Input-File Daten ein und bilde aus
ihnen Listen der Form:

seq1=[[],[],...], [1,2.0,1.0,3.0]-Einträge
seq2=[[],[],...], [2.0,1.0,3.0].Einträge

ich möchte diese Listen vergleichen und
zwar in der Form, dass die floats gleich sind
und ich eine neue Liste mit den an erster
Stelle stehenden ints aus den Listen von seq1
bekomme.

Vielen Dank für die Beiträge

monjiji
BlackJack

Freitag 21. März 2008, 10:25

Die Beschreibung ist verwirrend. Kannst Du mal ganz konkrete Beispiele geben und/oder das Problem als Problem beschreiben und nicht als Lösung?
monjiji
User
Beiträge: 2
Registriert: Freitag 21. März 2008, 09:44

Freitag 21. März 2008, 10:44

ok, also mein Prblem besteht darin, dass ich nicht weiß wie ich zwei
Einträge in zwei verschiedenen Listen vergleichen und dann einen anderen Eintrag aus der ersten Liste zurückgeben kann.
Ungefähr so

s = [1,1.0,2.0,3.0] Liste1
t = [1.0,2.0,3.0] Liste2

Wie kann ich jetzt 1.0 mit 1.0, 2.0 mit 2.0 und 3.0 mit 3.0 vergleichen und wenn das wahr ist mir 1 ausgeben lassen?

Hoffe es ist jetzt klarer!
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Freitag 21. März 2008, 12:13

Ungetestet:

Code: Alles auswählen

[item1[0] for item1, item2 in zip(seq1, seq2) if item1[1:] == item2]
MfG
HWK
Ene Uran
User
Beiträge: 125
Registriert: Sonntag 17. September 2006, 20:14
Wohnort: Hollywood

Freitag 21. März 2008, 14:15

Das kan man mit set() tun:

Code: Alles auswählen

seq1 = [0.1, 3.0, 2.0, 1.0]
seq2 = [1.0, 2.0, 3.0, 0.4]

set1 = set(seq1)
set2 = set(seq2)

print list(set1 & set2)  # [1.0, 2.0, 3.0]
Atomkraftwerkaktienbesitzer
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Freitag 21. März 2008, 15:41

Ene Uran hat geschrieben:Das kan man mit set() tun:

Code: Alles auswählen

seq1 = [0.1, 3.0, 2.0, 1.0]
seq2 = [1.0, 2.0, 3.0, 0.4]

set1 = set(seq1)
set2 = set(seq2)

print list(set1 & set2)  # [1.0, 2.0, 3.0]
Eher nicht:
1. Die Reihenfolge scheint ja eine Rolle zu spielen.
2. Elemente könnten ja mehrfach auftreten.
3. Das 1. Element von Sequenz 1 soll ja das Ergebnis sein und somit nicht mit den anderen Elementen verglichen werden.
4. Wo ist die gewünschte Ergebnisliste?
MfG
HWK
Antworten