Mapiranje, filtriranje i smanjenje funkcija u Pythonu: Sve što trebate znati

Naučite što su funkcije map (), filter () i reduce () u Pythonu. Također ih znate koristiti s lambda i korisnički definiranim funkcijama, kao i međusobno.

Python nudi mnoge ugrađene funkcije koje su unaprijed definirane i koje krajnji korisnik može koristiti samo pozivanjem. Te funkcije ne samo da olakšavaju rad programera već i stvaraju standardno okruženje za kodiranje. U ovom ćete članku naučiti o tri tako impresivne funkcije, a to su map (), filtriranje i smanjenje () u .

Prije nego krenemo naprijed, pogledajmo sadržaj:





Pa krenimo. :)

Što su funkcije map (), filter () i reduce () u Pythonu?

Kao što je ranije spomenuto, ugrađeni su map (), filter () i reduce () Pythona. Te funkcije omogućuju funkcionalni programski aspekt . U funkcionalnom programiranju, prosljeđeni argumenti jedini su faktori koji odlučuju o rezultatu. Te funkcije mogu uzeti bilo koju drugu funkciju kao parametar, a mogu se isporučiti i drugim funkcijama kao parametre. Pa hajde da sada dublje pogledamo svaku od ovih funkcija.



Funkcija karte ():

Funkcija map () vrsta je višeg reda. Kao što je ranije spomenuto, ova funkcija uzima drugu funkciju kao parametar, zajedno sa slijedom iterabila i vraća izlaz nakon primjene funkcije na svaki iterabil prisutan u nizu. Njegova sintaksa je sljedeća:

SINTAKSA:

mapa (funkcija, iterables)



Ovdje funkcija definira izraz koji se pak primjenjuje na iterable. Funkcija karte može uzimati i korisnički definirane funkcije lambda funkcije kao parametar.

Korištenje korisnički definiranih i Lambda funkcija unutar:

Korisnički definirane funkcije unutar mape ():

Funkcija map () može uzeti kao parametre korisnički definirane funkcije. Parametre ovih funkcija postavlja isključivo korisnik ili programer. Na primjer:

PRIMJER:

def newfunc (a): vrati a * a x = map (newfunc, (1,2,3,4)) #x je objekt mape print (x) print (set (x))

IZLAZ:

koji su 6 načina korištenja ove ključne riječi

{16, 1, 4, 9}

Kao što vidite, x je objekt karte. Sljedeći dio prikazuje funkciju karte koja uzima newfunc () kao svoj parametar, a zatim primjenjuje a * a na sve iterable. Kao rezultat toga, vrijednosti svih iterabilnih elemenata množe se same po sebi i vraćaju.

BILJEŠKA: Izlaz nije u redu prema vrijednostima iterablea jer sam koristio funkciju set (). Također možete koristiti funkcije list () ili tuple (), na primjer:

PRIMJER:

def newfunc (a): vrati a * a x = map (newfunc, (1,2,3,4)) #x je objekt mape print (x) print (list (x))

IZLAZ:

[1, 4, 9, 16]

Možete proslijediti i više popisa parametara. Na primjer:

PRIMJER:

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

IZLAZ:

(3, 6, 8)

Sada da vidimo kako možete koristiti lambda funkcije unutar funkcije map ().

Lambda funkcije unutar karte ():

Lambda funkcije su funkcije koje imaju bilo koji naziv. Te se funkcije često isporučuju kao parametri drugim funkcijama. Pokušajmo sada ugraditi lambda funkcije u funkciju map (). Razmotrimo sljedeći primjer:

PRIMJER:

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

IZLAZ:

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

Gornji je rezultat rezultat primjene lambda izraza (x + 3) na svaku stavku prisutnu u korpici.

Funkcija filtra ():

Funkcija filter () koristi se za stvaranje izlaznog popisa koji se sastoji od vrijednosti za koje funkcija vraća true. Sintaksa je sljedeća:

SINTAKSA:

filtar (funkcija, iterables)

Baš kao i map (), i ova se funkcija može koristiti kao parametar i funkcije definirane od korisnika kao i lambda funkcije.

PRIMJER:

def func (x): ako je x> = 3: return x y = filter (func, (1,2,3,4)) print (y) print (popis (y))

IZLAZ:

[3. 4]

Kao što vidite, y je objekt filtra, a popis je popis vrijednosti koje vrijede za uvjet (x> = 3).

Korištenje lambde unutar filtra ():


Lambda funkcija koja se koristi kao parametar zapravo definira uvjet koji treba provjeriti. Na primjer:

PRIMJER:

y = filtar (lambda x: (x> = 3), (1,2,3,4)) ispis (popis (y))

IZLAZ: [3. 4]

Gornji kod daje isti izlaz kao i prethodna funkcija.

Funkcija smanjivanja ():

Funkcija reduce (), kako opisuje naziv, primjenjuje zadanu funkciju na iterable i vraća jednu vrijednost.

smanjiti-mapa smanjiti filter-edureka

Sintaksa ove funkcije je sljedeća:

SINTAKSA:

smanjiti (funkcija, iterables)

Ovdje funkcija definira koji izraz treba primijeniti na iterable. Ovu funkciju treba uvesti iz functools-a modul . Na primjer:

PRIMJER:

pretvoriti decimalni u binarni python
iz functools uvoza smanjiti smanjiti (lambda a, b: a + b, [23,21,45,98])

IZLAZ: 187

U gore navedenom primjeru, funkcija reduciranja uzastopno dodaje svaki iterabil prisutan na popisu i vraća jedan izlaz.

Funkcije map (), filter () i reduce () u Pythonu mogu se koristiti međusobno.

Koristeći funkcije map (), filtrirajte () i reduce () zajedno:

Kada to učinite, prvo se rješavaju unutarnje funkcije, a zatim vanjske funkcije djeluju na izlazu unutarnjih funkcija.

Pokušajmo prvo proslijediti funkciju filter () kao parametar funkciji map ().

Korištenje filtra () unutar mape ():

Dolje navedeni kod prvo provjerava je li uvjet (x> = 3) istinit za iterable. Zatim se izlaz mapira pomoću funkcije map ().

PRIMJER:

c = karta (lambda x: x + x, filtriraj (lambda x: (x> = 3), (1,2,3,4))) ispis (popis (c))

IZLAZ: [6, 8]

Ako iz dane korpice filtrirate cijele brojeve veće ili jednake 3, kao rezultat dobit ćete [3,4]. Zatim, ako ovo mapirate pomoću (x + x) uvjeta, dobit ćete [6,8], što je rezultat.

Korištenje karte () unutar filtra ():


Kada koristite funkciju map () unutar funkcije filter (), iterabilima prvo upravlja funkcija karte, a zatim se na njih primjenjuje uvjet filtra ().

PRIMJER:

c = filtar (lambda x: (x> = 3), karta (lambda x: x + x, (1,2,3,4))) # lambda x: (x> = 3) ispis (popis (c) )

IZLAZ: [4, 6, 8]

Korištenje mape () i filtra () u okviru smanjenja ():

Izlaz internih funkcija smanjuje se u skladu s uvjetom koji se daje funkciji reduce ().

PRIMJER:

d = smanji (lambda x, y: x + y, mapa (lambda x: x + x, filtriraj (lambda x: (x> = 3), (1,2,3,4)))) ispis (d)

IZLAZ: 14

Izlaz je rezultat rada [6,8] koji je rezultat internih funkcija map () i filter ().

Ovim smo došli do kraja ovog članka na map (), filter () i reduciranju funkcija u Pythonu. Nadam se da ste sve jasno razumjeli. Obavezno vježbajte što je više moguće i vratite svoje iskustvo.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga 'map (), filter () i reduce () funkcije u Pythonu', a mi ćemo vam se javiti što je prije moguće.

Da biste stekli detaljno znanje o Pythonu, zajedno s raznim aplikacijama, možete se prijaviti uživo s 24/7 podrškom i doživotnim pristupom.