Seite 1 von 1

Min/Max einer Liste

Verfasst: Donnerstag 19. August 2004, 13:55
von x-herbert
Moin,

das Minimum/Maximum bei einer "normalen" Liste

liste = [1,2,3]
min = min(liste)

ist klar - Aber
wenn die Listenelemente aus Tripel der Form

liste2 = [(1,2,3),(4,5,6),(7,8,9)]

bestehen, wie finde ich hier das Minimum der "zweiten Spalte" also
min = 2 und max = 8 ??

Danke & Gruss

Verfasst: Donnerstag 19. August 2004, 14:13
von mawe
Hi!

Code: Alles auswählen

min2 = min((zip(*liste2))[1])
max2 = max((zip(*liste2))[1])
Gruß, mawe

Verfasst: Donnerstag 19. August 2004, 14:17
von mawe
Hi nochmal!

Andere Möglichkeit:

Code: Alles auswählen

min2 = min([x[1] for x in liste2])
max2 = max([x[1] for x in liste2])
Gruß, mawe

Verfasst: Donnerstag 19. August 2004, 14:22
von x-herbert
o.k. probiere ich aus...

das "(zip(*liste2))[1]" verstehe ich nicht ganz => gibt es bitte noch zwei Worte der Erklärung

Danke!

Verfasst: Donnerstag 19. August 2004, 14:36
von mawe
Nur zwei? :wink:

Zur Erklärung zeig ich Dir ein paar Beispiele, und weil ich furchtbar faul bin schreib ich die nicht selbst, sondern nur den Link :D

Gruß, mawe

Verfasst: Freitag 20. August 2004, 07:30
von x-herbert
o.k.!

Danke!

Verfasst: Freitag 20. August 2004, 11:26
von x-herbert
noch ´ne Frage....

ich habe zweiListen
liste1 = [(a,b),(c,d),(e,f)]
liste2 = [1,2,3]

und möchte die Form
liste3 = [(a,1,b),(c,2,d),(e,3,f)] oder
liste3 = [(a,b,1),(c,d,2),(e,f,3)]

gibt es da wieder eine "elegante" Lösung statt einiger verschleifter-Schleifen???

meine Versuche mit map und zip ergaben immer
liste3 = [((a,b),1),((c,d),2)...

Verfasst: Freitag 20. August 2004, 12:33
von Sorgenkind
liste3=[(a,c,b) for (a,b),c in zip(liste1,liste2)]
liste3=[(a,b,c) for (a,b),c in zip(liste1,liste2)]

Verfasst: Freitag 20. August 2004, 12:43
von x-herbert
super!!!