Další Kapitola: Seznam s Porozuměním
Lambda, filtr, snížit a mapy
Lambda Operátor
Někteří rádi, jiní ji nenávidí a mnozí se obávají, že lambda operátor. Jsme přesvědčeni, že se vám bude líbitpokud jste dokončili tuto kapitolu našeho tutoriálu., Pokud ne, můžete se dozvědět vše o „List Comprehensions“, Guido van Rossums preferovaný způsob, jak to udělat, protože nemá rád Lambda, map, filter a reduce.
funkce lambda nebo lambda je způsob, jak vytvořit malé anonymní funkce, tj. funkce bez názvu. Tyto funkce jsou funkce odhazování, tj. jsou potřebné pouze tam, kde byly vytvořeny.Lambda funkce se používají hlavně v kombinaci s funkcí filtr (), mapa () a snížit ().Funkce lambda byla přidána do Pythonu kvůli poptávce programátorů Lisp.,
obecná syntaxe lambda funkce je poměrně jednoduché:
lambda argument_list: výraz
argument seznam obsahuje čárkami oddělený seznam argumentů a expressionis aritmetický výraz pomocí těchto argumentů. Funkci můžete přiřadit proměnné a dát jí jméno.
následující příklad lambda funkce vrací součet jeho dva argumenty:
>>> f = lambda x, y : x + y>>> f(1,1)2
map() Funkce
výhodou lambda operátor může být viděn, když je použit v kombinaci s mapou() funkce.,
map() je funkce se dvěma argumenty:
r = map(func, seq)
první argument funkce je jméno funkce a druhý sled (např. seznam) seq. mapa() aplikuje funkci func na všechny prvky sekvence seq. Vrací nový seznam s prvky změněnými funcinem výše uvedený příklad, který jsme nepoužili lambda. Použitím lambda bychom nemuseli definovat a pojmenovat funkce fahrenheit () a celsius (). Můžete to vidět v následující interaktivní relaci: mapa () lze použít na více než jeden seznam. Seznamy musí mít stejnou délku., map (), bude applyits lambda funkce na prvky argument seznamy, tj. to první platí pro prvky s index 0, pak pro prvky s 1. index až do n-tého indexu je dosaženo:
>>> a = >>> b = >>> c = >>> map(lambda x,y:x+y, a,b)>>> map(lambda x,y,z:x+y+z, a,b,c)>>> map(lambda x,y,z:x+y-z, a,b,c)
můžeme vidět v příkladu výše, že parametr x dostane své hodnoty ze seznamu, zatímco y getsits hodnoty z b a z z seznam. c.
Filtrování
funkce filter(funkce, seznam) nabízí elegantní způsob, jak odfiltrovat všechny prvky seznamu,pro který funkce vrací True.
funkční filtr (f,l) potřebuje funkci f jako první argument., f vrací Booleovskou hodnotu, tj. buď falešnou nebo falešnou. Tato funkce bude použita pro každý prvek seznamu l. pouze v případě, že F vrátí True, bude prvek seznamu zařazen do seznamu výsledků.
snížení seznamu
funkce reduce (func, seq) neustále aplikuje funkci func () na sekvenci seq. Vrací asingle hodnotu.,
Pokud seq = , volat snížit(func, seq) funguje takto:
ukážeme si tento postup na následujícím příkladu:
>>> reduce(lambda x,y: x+y, )113
následující diagram ukazuje mezistupně výpočet:
Příklady snížení()
Stanovení maximální seznam číselných hodnot pomocí snížit:
>>> f = lambda a,b: a if (a > b) else b>>> reduce(f, )102>>>
vypočte součet čísel od 1 do 100:
>>> reduce(lambda x, y: x+y, range(1,101))5050
Další Kapitola: Seznam s Porozuměním