[Python-de] Funktionale Denksportaufgabe

Gregor Lingl glingl at aon.at
Thu Sep 26 12:43:14 EDT 2002


Dinu Gherman schrieb:

> Hier eine kleine Denksportaufgabe fuer die funktionale Fraktion:
> ich habe folgende rein imperative filter-Funktion:
>
> def filter1(func, seq):
>     if func == None:
>         return seq
>     lst = []
>     for elem in seq:
>         felem = func(elem)
>         if felem:
>             lst.append(elem)
>     return lst

Ich weiß ja nicht, ob ich dazu überhaupt etwas sagen sollte, denn
das  untenstehende versteh ich eigentlich gar nicht:

Was ist map1? Und liefert func(elem) and lst.append(elem) nicht
stets None, da doch die Methode append stets None liefert?

Aber das obige sieht mir nach folgendem aus:

def filter1(func, seq):
    if func == None:
        return seq
    return [elem for elem in seq if fun(elem)]

Oder "habe ich etwas verfehlt?" ;-)
Gregor Lingl

>
> was man auch umformen kann zu:
>
> def filter1(func, seq):
>     if func == None:
>         return seq
>     lst = []
>     map1(lambda elem:func(elem) and lst.append(elem), seq)
>     return lst
>
> Jetzt bin ich auf der Suche nach einem weitere Schritt, um die
> "temporaere" Liste lst, die hier gewissermassen einen gewollten
> "Seiten"-effekt darstellt, voellig loszuwerden.
>
> Wer bietet eine "rein funktionale" Loesung fuer die letzten drei
> Zeilen (ohne externe imperative Hilfsfunktionen) an?
>
> Dinu
>
> -- 
> Dinu C. Gherman
> ......................................................................
> "The whole point of brainwashing, is that those being brainwashed
> don't know it." (Graham Haley)
>
>
> _______________________________________________
> Python-de maillist  -  Python-de at starship.python.net
> http://starship.python.net/mailman/listinfo/python-de
>
>








More information about the Python-de mailing list