If am Ende der Zeile

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.
Kartoffel
User
Beiträge: 66
Registriert: Montag 7. April 2003, 17:08

If am Ende der Zeile

Beitragvon Kartoffel » Montag 12. Mai 2003, 15:07

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
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Re: If am Ende der Zeile

Beitragvon Voges » Montag 12. Mai 2003, 15:45

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder