Seite 1 von 1

If am Ende der Zeile

Verfasst: Montag 12. Mai 2003, 15:07
von Kartoffel
In Python Ge-Packt auf S 126 bei rekursiven Funktionen habe ich folgendes gesehen:

Code: Alles auswählen

return qsort ([x for x in L[1:] if x < L[0]) .........
Wie funktioniert das? Ich habe noch nie eine If-Anweisung am Ende der Zeile gesehen.
Bei diesem Beispiel funktioniert es, aber als ich einfach mal so etwas in der Art schreiben wollte, ging es nicht und ich habe die Art von if auch nirgends erklärt bekommen

Re: If am Ende der Zeile

Verfasst: Montag 12. Mai 2003, 15:45
von Voges
Hallo!
Zur Syntax gehören zwingend mind. ein for/in und die eckigen Klammern. Das nennt sich dann "list comprehension" und wird in der Python-Docu beschrieben unter
Tutorial -> 5. Data Structures -> 5.1 More on Lists -> 5.1.4 List Comprehensions

Im Prinzip macht das nur die Funktionen map() und filter() überflüssig und soll lesbarer sein (naja). Beipiele:

Code: Alles auswählen

bla = range(10)
# mit if
print [x for x in bla if not x%2]
# entspricht
print filter(lambda x: not x%2,bla)

# ohne if
print [x*2 for x in bla]
# entspricht
print map(lambda x: x*2,bla)
Jan