Functies toewijzen, filteren en verminderen in Python: alles wat u moet weten



Ontdek wat de functies map (), filter () en reduce () zijn in Python. Weet ook hoe u ze moet gebruiken met lambda en door de gebruiker gedefinieerde functies en samen met elkaar.

Python biedt veel ingebouwde functies die vooraf zijn gedefinieerd en die door de eindgebruiker kunnen worden gebruikt door ze gewoon aan te roepen. Deze functies vergemakkelijken niet alleen het werk van programmeurs, maar creëren ook een standaard codeeromgeving. In dit artikel leer je over drie van zulke indrukwekkende functies, namelijk map (), filter en reduce () in .

Laten we, voordat we verder gaan, de inhoud eens bekijken:





Dus laten we beginnen. :)

Wat zijn de functies map (), filter () en reduce () in Python?

Zoals eerder vermeld, zijn map (), filter () en reduce () ingebouwd van Python. Deze functies maken het functionele programmeeraspect van . Bij functioneel programmeren zijn de doorgegeven argumenten de enige factoren die de output bepalen. Deze functies kunnen elke andere functie als parameter aannemen en kunnen ook als parameter aan andere functies worden geleverd. Dus laten we nu dieper ingaan op elk van deze functies.



De map () functie:

De functie map () is een type van hogere orde. Zoals eerder vermeld, neemt deze functie een andere functie als parameter samen met een reeks iterables en retourneert een uitvoer na het toepassen van de functie op elke iterabele die in de reeks aanwezig is. De syntaxis is als volgt:

SYNTAXIS:

map (functie, iterables)



Hier definieert de functie een uitdrukking die op zijn beurt wordt toegepast op de iterables. De kaartfunctie kan zowel door de gebruiker gedefinieerde functies als lambda-functies als parameter.

Door de gebruiker gedefinieerde en Lambda-functies gebruiken binnen:

Door de gebruiker gedefinieerde functies binnen map ():

De functie map () kan door de gebruiker gedefinieerde functies als parameters aannemen. De parameters van deze functies worden exclusief ingesteld door de gebruiker of de programmeur. Bijvoorbeeld:

wat betekent tostring in java

VOORBEELD:

def newfunc (a): return a * a x = map (newfunc, (1,2,3,4)) #x is het kaartobject print (x) print (set (x))

UITGANG:

{16, 1, 4, 9}

Zoals u kunt zien, is x een kaartobject. De uitvoer van het volgende deel toont de mapfunctie met newfunc () als zijn parameter en past vervolgens de a * a toe op alle iterables. Als gevolg hiervan worden de waarden van alle iterabelen met zichzelf vermenigvuldigd en geretourneerd.

OPMERKING: De uitvoer is niet in de volgorde van de waarden van de iterables omdat ik de functie set () heb gebruikt. U kunt bijvoorbeeld ook de functies list () of tuple () gebruiken:

VOORBEELD:

def newfunc (a): retourneer a * a x = map (newfunc, (1,2,3,4)) #x is het kaartobject print (x) print (lijst (x))

UITGANG:

[1, 4, 9, 16]

U kunt ook meer dan één lijst met parameters doorgeven. Bijvoorbeeld:

VOORBEELD:

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

UITGANG:

(3, 6, 8)

Laten we nu eens kijken hoe u lambda-functies binnen de map () functie.

Lambda-functies binnen map ():

Lambda-functies zijn functies die elke naam hebben. Deze functies worden vaak als parameters aan andere functies geleverd. Laten we nu proberen lambda-functies in de map () -functie in te bedden. Beschouw het volgende voorbeeld:

VOORBEELD:

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

UITGANG:

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

De bovenstaande uitvoer is het resultaat van het toepassen van de lambda-uitdrukking (x + 3) op elk item in het tupel.

De filter () functie:

De functie filter () wordt gebruikt om een ​​uitvoerlijst te maken die bestaat uit waarden waarvoor de functie true retourneert. De syntaxis ervan is als volgt:

SYNTAXIS:

hoe xml in java te parseren

filter (functie, iterables)

Net als map (), kan deze functie ook door de gebruiker gedefinieerde functies en lambda-functies als parameter worden gebruikt.

VOORBEELD:

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

UITGANG:

[3. 4]

Zoals u kunt zien, is y het filterobject en is de lijst een lijst met waarden die waar zijn voor de voorwaarde (x> = 3).

Lambda gebruiken binnen filter ():


De lambda-functie die als parameter wordt gebruikt, definieert feitelijk de conditie die moet worden gecontroleerd. Bijvoorbeeld:

VOORBEELD:

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

UITGANG: [3. 4]

De bovenstaande code produceert dezelfde uitvoer als de vorige functie.

De functie reduce ():

De functie reduce (), zoals de naam beschrijft, past een bepaalde functie toe op de iterables en retourneert een enkele waarde.

reduce-map reduceer filter-edureka

De syntaxis van deze functie is als volgt:

SYNTAXIS:

verminderen (functie, iterables)

De functie definieert hier welke expressie moet worden toegepast op de iterables. Deze functie moet worden geïmporteerd vanuit de functools module . Bijvoorbeeld:

VOORBEELD:

van functools import verminderen verminderen (lambda a, b: a + b, [23,21,45,98])

UITGANG: 187

In het bovenstaande voorbeeld voegt de reduceerfunctie achtereenvolgens elke iterabele in de lijst toe en retourneert een enkele uitvoer.

De functies map (), filter () en reduce () in Python kunnen naast elkaar worden gebruikt.

ronde dubbele naar int java

Gebruik map (), filter () en reduce () functies samen met elkaar:

Wanneer je dit doet, worden eerst de interne functies opgelost en vervolgens werken de uiterlijke functies op de output van de interne functies.

Laten we eerst proberen de functie filter () als parameter door te geven aan de functie map ().

Gebruik filter () binnen map ():

De onderstaande code controleert eerst of de voorwaarde (x> = 3) waar is voor de iterables. Vervolgens wordt de uitvoer toegewezen met behulp van de functie map ().

VOORBEELD:

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

UITGANG: [6, 8]

Als je gehele getallen groter dan of gelijk aan 3 uit het gegeven tupel filtert, krijg je [3,4] als resultaat. Als je dit vervolgens in kaart brengt met de voorwaarde (x + x), krijg je [6,8], wat de uitvoer is.

Met behulp van map () binnen filter ():


Wanneer u de functie map () binnen de functie filter () gebruikt, worden de iterables eerst bediend door de kaartfunctie en vervolgens wordt de voorwaarde van filter () erop toegepast.

VOORBEELD:

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

UITGANG: [4, 6, 8]

Met behulp van map () en filter () binnen reduc ():

De output van de interne functies wordt verminderd volgens de conditie die wordt geleverd aan de functie reduc ().

VOORBEELD:

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

UITGANG: 14

De uitvoer is een resultaat van [6,8] wat het resultaat is van de interne map () en filter () functies.

Hiermee zijn we aan het einde gekomen van dit artikel over map (), filter () en reduceer functies in Python. Ik hoop dat je alles duidelijk hebt begrepen. Zorg ervoor dat je zoveel mogelijk oefent en terugkeert naar je ervaring.

Heeft u een vraag voor ons? Vermeld het in de commentarensectie van deze “map (), filter () en reduce () Functies in Python” blog en we nemen zo snel mogelijk contact met je op.

Om diepgaande kennis op te doen over Python en de verschillende applicaties, kunt u zich live inschrijven met 24/7 ondersteuning en levenslange toegang.