In einer Liste Werte 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
HilfeSuchend
User
Beiträge: 2
Registriert: Dienstag 13. September 2011, 08:50

Servus,

ich habe eine Liste [[1, 13, 15757.5927734375, u'edge358'], [1, 15, 30747.810302734375, u'edge358'], [1, 17, 24298.661178588867, u'edge358'], [1, 18, 0.0, u'edge171']] (das ist nur ein Auszug), mit der ich folgendes machen möchte: Für alle Ergebnisse, wo der erste und letzte Eintrag eines Substrings (also bswp. die 1 und edge358) gleich sind, soll er das Minimum im vorletzen (also in diesem Beispiel 15757.5927734375) Eintrag finden.
Ich steh leider grad echt auf dem Schlauch, vielen Dank schon einmal für Eure Hilfe.
BlackJack

@HilfeSuchend: Bei erster und letzter Eintrag eines *Substrings* meintest Du sicher *Subliste*!?

Sind die Suchkriterien vorgegeben, oder soll das Ergebnis für *alle* vorkommenden Paare vom ersten und letzten Element der Sublisten ermittelt werden?

Gehen wir mal von gegebenen Suchkriterien aus, dann musst Du doch nur die Sublisten wählen (siehe [27] weiter unten). Da das vorletzte Element von nehmen (→[28]). Und von denen dann das Minimum auswählen (→[29)]. Mal schrittweise entwickelt:

Code: Alles auswählen

In [25]: data
Out[25]: 
[[1, 13, 15757.5927734375, u'edge358'],
 [1, 15, 30747.810302734375, u'edge358'],
 [1, 17, 24298.661178588867, u'edge358'],
 [1, 18, 0.0, u'edge171']]

In [26]: [x for x in data]
Out[26]: 
[[1, 13, 15757.5927734375, u'edge358'],
 [1, 15, 30747.810302734375, u'edge358'],
 [1, 17, 24298.661178588867, u'edge358'],
 [1, 18, 0.0, u'edge171']]

In [27]: [x for x in data if x[0] == 1 and x[-1] == 'edge358']
Out[27]: 
[[1, 13, 15757.5927734375, u'edge358'],
 [1, 15, 30747.810302734375, u'edge358'],
 [1, 17, 24298.661178588867, u'edge358']]

In [28]: [x[-2] for x in data if x[0] == 1 and x[-1] == 'edge358']
Out[28]: [15757.5927734375, 30747.810302734375, 24298.661178588867]

In [29]: min(x[-2] for x in data if x[0] == 1 and x[-1] == 'edge358')
Out[29]: 15757.5927734375
HilfeSuchend
User
Beiträge: 2
Registriert: Dienstag 13. September 2011, 08:50

oh man, ich Depp.

1000 Dank, funzt einwandfrei.
und ich meinte natürlich subliste ;-)
Antworten