Seite 1 von 1
List comprehension, filter und lambda
Verfasst: Donnerstag 28. Juni 2012, 07:58
von /me
In Stackexchange stieß ich auf Code der sich mir aktuell zu so früher Stunde nicht so recht erschließen will.
Code: Alles auswählen
>>> predicates = lambda x:x<20, lambda x:x>20
>>> print [filter(pred, [25, 8, 22, 9]) for pred in predicates]
[[8, 9], [25, 22]]
Was passiert da? Oder alternativ gefragt: wie könnte ich das mit explizit definierten - also nicht anonymen - Funktionen umsetzen?
Re: List comprehension, filter und lambda
Verfasst: Donnerstag 28. Juni 2012, 08:11
von cofi
Bist du auf der Suche nach
Code: Alles auswählen
In [1]: def less_than_20(x):
...: return x < 20
...: def greater_than_20(x):
...: return x > 20
...:
In [2]: print [filter(pred, [25, 8, 22, 9]) for pred in [less_than_20, greater_than_20]]
[[8, 9], [25, 22]]
?
Hier passiert nicht mehr als
Code: Alles auswählen
In [3]: predicates = [less_than_20, greater_than_20]
In [4]: res = []
In [5]: for p in predicates:
...: valids = []
...: for x in [25, 8, 22, 9]:
...: if p(x):
...: valids.append(x)
...: res.append(valids)
...:
In [6]: res
Out[7]: [[8, 9], [25, 22]]
Oder versteh ich dich hier falsch?
Re: List comprehension, filter und lambda
Verfasst: Donnerstag 28. Juni 2012, 08:32
von /me
cofi hat geschrieben:Oder versteh ich dich hier falsch?
Nein tust du nicht. Jetzt sehe ich es auch. Ich hatte die ganze Zeit geistig ein im Code nicht vorhandenes
if im Kopf. Es ist gestern (bzw. heute morgen) zu spät geworden ...
Danke.