Welkom terug, ik wil met je praten over enkele handige functies die we krijgen die ons in staat
stellen om in een functioneel programmeerparadigma te denken.
De naam van deze functies is kaartfilter.
Zipp.
En dit zijn zeer, zeer nuttige, veel voorkomende functies die je veel zult schrijven als je een Python-programma
bent.
Dus laten we ze verkennen.
Ten eerste gaan we beginnen met MAP.
En met kaart kunnen we de code die we hier hebben vereenvoudigen door met twee te vermenigvuldigen.
Zie je, met wiskunde heb ik het beschikbaar als een functie, als een ingebouwde functie, en we zien
hier dat we de eerste parameter een functie geven en dan is de tweede parameter een iterabele.
Een goede manier om erover na te denken, is dat we hier een soort van actie willen ondernemen.
Dus een functie en dan de data waar we actie op willen ondernemen.
Dus laten we zeggen in ons geval, één, twee, drie.
Dus welke actie willen we ondernemen?
Een twee drie.
We willen vermenigvuldigen met twee, dus laten we zeggen vermenigvuldigen.
Met twee.
Nu moet ik dit naar beneden verplaatsen omdat we eerst de functie moeten definiëren.
En voer het zo uit, dus laten we het doen in plaats van dit af te drukken.
Afdrukken.
Zoals dit, als ik het run.
Ik krijg een kaartobject op deze geheugenlocatie.
En kaart geeft ons automatisch dit object dat het in dit geheugen heeft gemaakt.
Dus om het echt te kunnen bekijken, moeten we het in een lijst als deze veranderen.
Dus als ik dit uitvoer.
Er staat dat online voor int-object niet itereerbaar is, nou ja, het is omdat we met MAP niet langer deze creatie
van een lijst hoeven te maken en vervolgens aan een lijst moeten toevoegen.
Zie je, het leuke van MAP is dat ik het wat gegevens geef en dan wordt er op deze gegevens
gereageerd.
En alles wat we met de kaartfunctie hoeven te doen, is een functie hebben die terugkeert.
Dit deel, Eitam maal twee, dus in plaats van al deze code te hebben, hoeven we alleen maar terug te zeggen.
Artikel tijden tot.
Laten we deze parameter dus veranderen in item.
En bekijk de code een beetje meer in detail.
Dus met de kaart, zeg ik, hé, ik wil dat je de functie uitvoert, vermenigvuldig met twee, merk hier op dat ik
niet eens de haakjes heb omdat ik het geen kaart hoef te noemen.
Is het voor mij?
Map zegt gewoon, hé, geef me de functie, ik zorg voor de rest.
Dus ik roep de functie hier niet aan.
De kaart gaat de functie voor mij aanroepen.
Ik zeg alleen maar, hé, als ik de kaart zo roep.
Ik wil dat je deze functie op dit geheugenadres gebruikt en deze gegevens gebruikt.
Herinner je je ons functionele programmeerparadigma nog?
We hebben gegevens waarop actie wordt ondernomen, dus die twee scheiden we van elkaar.
Nu, deze functie zal elk van de items in onze eetwaren nemen, in ons geval zal de eerste keer dat het item
één is, dan twee, dan drie.
En dan hoeven we alleen maar terug te geven welk effect we op dat item willen hebben.
In ons geval is het om dit te doen door deze kaart te doen, voert deze functie automatisch voor ons uit en
doorloopt alle items in de iterable en geeft ons een nieuw kaartobject terug dat we in een lijst gaan omzetten
als ik dit uitvoer.
Ik krijg twee, vier, zes.
Nu, hier is het leuke deel, als ik dat doe, laten we zeggen mijn lijst en ik zeg één, twee, drie.
En ik heb mijn lijst hier gewijzigd.
Zoals dit en aan het einde ook mijn lijst afdrukken als ik op uitvoeren klik.
Je zult zien dat mijn lijst niet is veranderd.
Onthouden?
Een pure functie is een functie die de buitenwereld niet op deze manier beïnvloedt, kaart stelt ons in staat om een hele nieuwe
lijst te maken.
Dat verandert niets aan mijn lijst.
Dus mijn lijst is onveranderlijk, toch?
We veranderen het niet en het enige wat het doet is de kaartfunctie, zorgt ervoor en retourneert een nieuwe lijst voor ons.
Maar we hebben geen invloed op de buitenwereld.
Er zijn geen bijwerkingen in deze functie.
We vermenigvuldigen simpelweg item tot item met twee door hier een nieuwe lijst van te maken.
En elke keer dat we het dezelfde invoer geven, resulteert dit in dezelfde uitvoer.
Heel, heel cool en kaart is buitengewoon handig, want elke keer dat we iets hebben dat we kunnen
herhalen en dat we willen veranderen, laten we zeggen dat we e-mails of gebruikersnamen hebben en we de gebruikersnamen moeten bijwerken naar, laten
we zeggen, allemaal hoofdletters zijn .
In dat geval kunnen we herhalen en de wiskundige functie gebruiken, alle gebruikersnamen in onze lijst veranderen in, laten we zeggen,
de kaart met hoofdletters zal een van die functies zijn die je veel gebruikt in je programmeercarrière.
En ik hoop dat je hier kunt zien hoe schoon en mooi het is, nogmaals, met behulp van functionele programmeerparadigma's.
Laten we naar de volgende gaan.
Laten we het hierna hebben over Filter.