Mapuj, filtruj i redukuj funkcje w Pythonie: wszystko, co musisz wiedzieć



Dowiedz się, czym są funkcje map (), filter () i redukuj () w Pythonie. Wiesz także, jak ich używać z lambda i funkcjami zdefiniowanymi przez użytkownika oraz razem ze sobą.

Python zapewnia wiele wbudowanych funkcji, które są wstępnie zdefiniowane i mogą być używane przez użytkownika końcowego, po prostu wywołując je. Funkcje te nie tylko ułatwiają pracę programistom, ale także tworzą standardowe środowisko kodowania. W tym artykule dowiesz się o trzech tak imponujących funkcjach, a mianowicie map (), filtrowaniu i ograniczaniu () w .

Zanim przejdziemy dalej, spójrzmy na zawartość:





Więc zacznijmy. :)

Co to są funkcje map (), filter () i redukuj () w Pythonie?

Jak wspomniano wcześniej, map (), filter () i redukuj () są wbudowane Pythona. Funkcje te umożliwiają funkcjonalny aspekt programowania . W programowaniu funkcyjnym przekazane argumenty są jedynymi czynnikami decydującymi o wyniku. Funkcje te mogą przyjmować dowolną inną funkcję jako parametr i mogą być również dostarczane do innych funkcji jako parametry. Przyjrzyjmy się teraz dokładniej każdej z tych funkcji.



Funkcja map ():

Funkcja map () jest typem wyższego rzędu. Jak wspomniano wcześniej, ta funkcja przyjmuje inną funkcję jako parametr wraz z sekwencją iterowalnych i zwraca dane wyjściowe po zastosowaniu funkcji do każdej iterowalnej funkcji obecnej w sekwencji. Jego składnia jest następująca:

SKŁADNIA:

mapa (funkcja, iterowalne)



Tutaj funkcja definiuje wyrażenie, które z kolei jest stosowane do iterowalnych. Funkcja mapy może również przyjmować funkcje zdefiniowane przez użytkownika funkcje lambda jako parametr.

Korzystanie z funkcji zdefiniowanych przez użytkownika i Lambda w:

Funkcje zdefiniowane przez użytkownika w map ():

Funkcja map () może przyjmować funkcje zdefiniowane przez użytkownika jako parametry. Parametry tych funkcji są ustawiane wyłącznie przez użytkownika lub programistę. Na przykład:

PRZYKŁAD:

def newfunc (a): return a * a x = map (newfunc, (1,2,3,4)) #x jest obiektem mapy print (x) print (set (x))

WYNIK:

{16, 1, 4, 9}

Jak widać, x jest obiektem mapy. Następna część wyjściowa wyświetla funkcję map, która przyjmuje newfunc () jako parametr, a następnie stosuje a * a do wszystkich iterable. W rezultacie wartości wszystkich iterable są mnożone przez siebie i zwracane.

UWAGA: Dane wyjściowe nie są w kolejności wartości iterowalnych, ponieważ użyłem funkcji set (). Możesz także użyć funkcji list () lub tuple (), na przykład:

PRZYKŁAD:

def newfunc (a): return a * a x = map (newfunc, (1,2,3,4)) #x jest obiektem mapy print (x) print (list (x))

WYNIK:

[1, 4, 9, 16]

Możesz również przekazać więcej niż jedną listę parametrów. Na przykład:

PRZYKŁAD:

def func (a, b): return a + b a = map (func, [2, 4, 5], [1,2,3]) print (a) print (tuple (a))

WYNIK:

(3, 6, 8)

Zobaczmy teraz, jak możesz użyć funkcje lambda w funkcji map ().

jak skompilować programy java

Funkcje lambda w map ():

Funkcje lambda to funkcje, które mają dowolną nazwę. Funkcje te są często dostarczane jako parametry innych funkcji. Teraz spróbujmy osadzić funkcje lambda w funkcji map (). Rozważmy następujący przykład:

PRZYKŁAD:

tup = (5, 7, 22, 97, 54, 62, 77, 23, 73, 61) newtuple = tuple (map (lambda x: x + 3, tup)) print (newtuple)

WYNIK:

(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)

Powyższe dane wyjściowe są wynikiem zastosowania wyrażenia lambda (x + 3) do każdego elementu znajdującego się w krotce.

Funkcja filter ():

Funkcja filter () służy do tworzenia listy wyjściowej składającej się z wartości, dla których funkcja zwraca wartość true. Składnia jest następująca:

SKŁADNIA:

filtr (funkcja, iterowalne)

Podobnie jak map (), ta funkcja może być również używana jako parametr jako funkcje zdefiniowane przez użytkownika, a także funkcje lambda.

PRZYKŁAD:

def func (x): if x> = 3: return x y = filter (func, (1,2,3,4)) print (y) print (list (y))

WYNIK:

[3. 4]

Jak widać, y jest obiektem filtru, a lista jest listą wartości, które są prawdziwe dla warunku (x> = 3).

Używanie lambda w filtrze ():


Funkcja lambda używana jako parametr w rzeczywistości definiuje warunek, który ma zostać sprawdzony. Na przykład:

PRZYKŁAD:

y = filter (lambda x: (x> = 3), (1,2,3,4)) print (list (y))

WYNIK: [3. 4]

Powyższy kod daje te same dane wyjściowe, co poprzednia funkcja.

Funkcja redukuj ():

Funkcja redukuj (), jak sama nazwa wskazuje, stosuje daną funkcję do elementów iteracyjnych i zwraca pojedynczą wartość.

redukcja mapy redukcja filter-edureka

Składnia tej funkcji jest następująca:

SKŁADNIA:

redukcja (funkcja, iterowalne)

Funkcja w tym miejscu definiuje, jakie wyrażenie należy zastosować do iterowalnych. Ta funkcja musi zostać zaimportowana z functools moduł . Na przykład:

PRZYKŁAD:

z functools import zmniejsz redukuj (lambda a, b: a + b, [23,21,45,98])

WYNIK: 187

W powyższym przykładzie funkcja redukuj sukcesywnie dodaje każdą iterację obecną na liście i zwraca pojedyncze wyjście.

Funkcji map (), filter () i redukuj () w Pythonie można używać razem.

Używając razem funkcji map (), filter () i redukuj ():

Kiedy to zrobisz, najpierw rozwiązywane są funkcje wewnętrzne, a następnie funkcje zewnętrzne działają na wyjściu funkcji wewnętrznych.

Spróbujmy najpierw przekazać funkcję filter () jako parametr do funkcji map ().

Korzystanie z funkcji filter () w map ():

Kod podany poniżej najpierw sprawdza, czy warunek (x> = 3) jest prawdziwy dla elementów iteracyjnych. Następnie dane wyjściowe są mapowane za pomocą funkcji map ().

PRZYKŁAD:

c = map (lambda x: x + x, filter (lambda x: (x> = 3), (1,2,3,4))) print (list (c))

WYNIK: [6, 8]

Jeśli odfiltrujesz liczby całkowite większe lub równe 3 z danej krotki, jako wynik otrzymasz [3,4]. Następnie, jeśli zmapujesz to za pomocą warunku (x + x), otrzymasz [6,8], które jest wynikiem.

Korzystanie z map () w filtrze ():


Kiedy używasz funkcji map () w funkcji filter (), iterowalne są najpierw obsługiwane przez funkcję map, a następnie stosowany jest do nich warunek filter ().

PRZYKŁAD:

c = filter (lambda x: (x> = 3), map (lambda x: x + x, (1,2,3,4))) #lambda x: (x> = 3) print (list (c) )

WYNIK: [4, 6, 8]

Korzystanie z map () i filter () w ciągu redukuj ():

Wyjście funkcji wewnętrznych jest redukowane zgodnie z warunkiem dostarczonym do funkcji redukuj ().

PRZYKŁAD:

d = redukuj (lambda x, y: x + y, map (lambda x: x + x, filter (lambda x: (x> = 3), (1,2,3,4)))) print (d)

WYNIK: 14

Wynik jest wynikiem działania [6,8], które jest wynikiem funkcji wewnętrznej map () i filter ().

Dzięki temu dotarliśmy do końca tego artykułu na temat map (), filter () i redukcji funkcji w Pythonie. Mam nadzieję, że wszystko zrozumiałeś. Upewnij się, że ćwiczysz jak najwięcej i cofnij swoje doświadczenie.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy w tym blogu „map (), filter () i redukuj () Funkcje w Pythonie”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.

Aby uzyskać dogłębną wiedzę na temat języka Python i jego różnych aplikacji, możesz zarejestrować się na żywo z całodobowym wsparciem i dożywotnim dostępem.