poprzedni rozdział: wyrażenia regularne, zaawansowane
następny rozdział: list Comprehension

Lambda, filter, reduce and map

Lambda Operator

niektórzy to lubią, inni nienawidzą i wielu boi się operatora lambda. Jesteśmy przekonani, że ci się spodoba, gdy skończysz z tym rozdziałem naszego samouczka., Jeśli nie, możesz dowiedzieć się wszystkiego o „składaniu List”, Guido van Rossums preferował ten sposób, ponieważ nie lubi Lambdy, mapowania, filtrowania i zmniejszania.
operator lambda lub funkcja lambda jest sposobem tworzenia małych funkcji anonimowych, czyli funkcji bez nazwy. Funkcje te są funkcjami odrzucenia, tzn. są potrzebne tylko tam, gdzie zostały utworzone.Funkcje Lambda są używane głównie w połączeniu z funkcjami filter (), map () i reduce ().Funkcja lambda została dodana do Pythona ze względu na zapotrzebowanie ze strony programistów Lispu.,
ogólna składnia funkcji lambda jest dość prosta:
lambda argument_list: wyrażenie
lista argumentów składa się z oddzielonej przecinkami listy argumentów, a wyrażenie jest wyrażeniem arytmetycznym wykorzystującym te argumenty. Możesz przypisać funkcję do zmiennej, aby nadać jej nazwę.
poniższy przykład funkcji lambda Zwraca sumę jej dwóch argumentów:

>>> f = lambda x, y : x + y>>> f(1,1)2

funkcja map ()

zaleta operatora lambda jest widoczna, gdy jest używana w połączeniu z funkcją map ().,
map() jest funkcją z dwoma argumentami:

r = map(func, seq)

pierwszy argument func to nazwa funkcji, a drugi Sekwencja (np. lista) seq. map() stosuje funkcję func do wszystkich elementów sekwencji seq. Zwraca nową listę z elementami zmienionymi przez funcIn w powyższym przykładzie nie użyliśmy lambda. Używając lambda, nie musielibyśmy definiować i nazywać funkcji fahrenheit () i celsius (). Można to zobaczyć w następującej interaktywnej sesji: map() może być zastosowana do więcej niż jednej listy. Listy muszą mieć taką samą długość., map() zastosuje swoją funkcję lambda do elementów listy argumentów, tzn. najpierw stosuje się do elementów o indeksie 0, potem do elementów o indeksie 1, aż do osiągnięcia n-tego indeksu:

>>> 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)

w powyższym przykładzie widzimy, że parametr x pobiera swoje wartości z listy a,podczas gdy y pobiera wartości z listy b i z z listy c.

filtrowanie

funkcja filter(function, list) oferuje elegancki sposób filtrowania wszystkich elementów listy, dla których funkcja zwraca true.
filtr funkcji (f, l)potrzebuje funkcji f jako pierwszego argumentu., f Zwraca wartość logiczną, np. eitherTrue lub False. Ta funkcja zostanie zastosowana do każdego elementu listy l. tylko jeśli f zwróci True, element listy zostanie włączony do listy wynikowej.

redukcja listy

funkcja reduce (func, seq) nieustannie stosuje funkcję func () do sekwencji seq. Zwraca wartość asingle.,
Jeśli seq = , wywołanie reduce(func, seq) działa w ten sposób:
zilustrujemy ten proces w poniższym przykładzie:

>>> reduce(lambda x,y: x+y, )113

poniższy diagram pokazuje pośrednie etapy obliczeń:

przykłady reduce()

określanie maksimum listy wartości liczbowych za pomocą reduce:

>>> f = lambda a,b: a if (a > b) else b>>> reduce(f, )102>>> 

obliczanie sumy liczb od 1 do 100:

>>> reduce(lambda x, y: x+y, range(1,101))5050

poprzedni rozdział: wyrażenia regularne, zaawansowane
następny rozdział: rozumienie list

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *