[Python-de] "Funktionalitaet" von Python
Stefan Schwarzer
sschwarzer at sschwarzer.net
Sat Aug 31 01:07:12 EDT 2002
Hallo Holger,
holger krekel wrote:
> Stefan Schwarzer wrote:
>>lambda, map usw. stören mich nicht "an sich", man _kann_ damit sicher guten,
>>lesbaren Code schreiben. Das Problem sehe ich aber darin, dass diese Konstrukte
>>es ziemlich leicht machen, schwer verständlichen Code zu schreiben, der zuviel
>>"auf zu engem Raum" tut. Aus dem gleichen Grund, so denke ich, gibt es keine
>>Zuweisungs-_Operatoren_ und keinen ternären ?: -Operator wie in C.
>
> hauefig werden ja list-comprehensions als Alternative vorgeschlagen. Um
> zum Beispiel alle keys in B zu finden, die nicht in A sind:
>
> [ k for k in B if k not in A ]
>
> (Zitat aus einer aktuellen c.l.py diskussion)
>
> da finde ich die "funktionale" Variante lesbarer:
>
> map(lambda x: not x in A, B)
ich mag nicht die eine oder die andere Möglichkeit pauschal lieber. Es kommt
drauf an. Zum Beispiel finde ich
strings = map(str, liste)
netter als
strings = [str(item) for item in liste]
(Zumindest hätte ich das vor ein paar Monaten noch gesagt; ich merke, dass ich
mich wohl _sehr_ an List Comprehensions gewöhnt habe bzw. map & Co. eben nicht
mehr gewohnt bin. ;-) )
Im Zweifelsfall würde ich aber die Schreibweise mit List Comprehensions bevorzugen.
Wenn ich mich allerdings getreu dem Motto entscheiden müsste, dass es vorzugsweise
_eine_ naheliegende Methode geben sollte, etwas zu tun, würde ich eher lambda und
map rauswerfen als List Comprehensions. ;-)
> Die List-Comprehensions haben fuer meine Geschmack zu viele
> "free-floating" Zeichen ohne jeden Halt fuer das Auge.
Da gebe ich dir recht. Normalerweise kompensiere ich so etwas durch "strukturierende
Abstände":
[ k for k in B if k not in A ]
> Da finde ich map/lambda & friends netter, obwohl ich
> keine Lisp-Vergangenheit habe.
Wie gesagt, ich finde, es kommt drauf an. :-)
Viele Grüße
Stefan
More information about the Python-de
mailing list