Python map()-functie met voorbeelden

โšก Slimme samenvatting

Python `map()` past een gegeven functie toe op elk item van een iterable, zoals een lijst, tuple, set, dictionary of string. Het retourneert een 'lazy map'-object dat je kunt converteren met `list()` of waar je doorheen kunt itereren met een lus.

  • ๐Ÿ”ข Syntax: map() neemt een functie plus een of meer iterables en past die functie toe op elk element.
  • ๐Ÿ” Winstwaarde: `map()` retourneert een lui `map`-object, dus wikkel het in een `list()`, `tuple()` of `set()` om de resultaten te bekijken.
  • ๐Ÿงฉ Iterables: Lijsten, tuples, sets, dictionaries en strings werken allemaal als invoer voor map().
  • โšก Lambda: Door map() te combineren met een lambda-uitdrukking hoef je voor eenvoudige transformaties geen aparte functie met een specifieke naam te definiรซren.
  • โž• Meerdere iterables: Het doorgeven van meerdere iterables zorgt ervoor dat de functie parallel op deze iterables wordt toegepast, stopping op zijn kortst.
  • ๐Ÿค– AI-assistentie: AI-assistenten zoals GitHub Copilot genereren map()-aanroepen, en transformaties in map-stijl voeden datapijplijnen in machine learning.

Python kaart() Functie

Syntaxis

map(function, iterator1,iterator2 ...iteratorN)

Kenmerken

Hier volgen twee belangrijke parameters:

  • functie: Een verplichte functie die aan map() moet worden meegegeven en die wordt toegepast op alle items in de iterator.
  • iterator: Een verplicht iterable object. Dit kan een lijst, een tuple, enzovoort zijn. Je kunt meerdere iterator-objecten aan de map()-functie doorgeven.

Winstwaarde

De functie `map()` past de gegeven functie toe op alle items in de iterator en retourneert een iterable map-object, bijvoorbeeld een tuple, een lijst, enzovoort.

Hoe werkt de functie map()?

De functie `map()` neemt twee invoerwaarden: een functie en een iterable object. De functie die aan `map()` wordt gegeven, is een normale functie die alle waarden in het iterable object doorloopt.

Stel dat u een lijst met getallen hebt en u wilt het kwadraat van elk getal berekenen.

Om de uitvoer te krijgen, hebben we een functie nodig die het kwadraat van het gegeven getal retourneert. De functie is als volgt:

def square(n):
	return n*n

De lijst met items waarvoor we het kwadraat willen vinden, is als volgt:

my_list = [2,3,4,5,6,7,8,9]

Laten we nu de ingebouwde functie map() gebruiken om het kwadraat van elk item in my_list te berekenen.

De uiteindelijke code is als volgt:

def square(n):
    return n*n
my_list = [2,3,4,5,6,7,8,9]
updated_list = map(square, my_list)
print(updated_list)
print(list(updated_list))

Output:

<map object at 0x0000002C59601748>
[4, 9, 16, 25, 36, 49, 64, 81]

De uitvoer van de map()-functie, zoals hierboven weergegeven, is een kaartobject dat op het scherm wordt getoond als .

Je moet de uitvoer van `map()` herhalen met behulp van een `for`-lus of de `list()`-methode om de uiteindelijke uitvoer te krijgen. Ik heb in de code `list()` gebruikt om de waarden in de gegeven lijst weer te geven.

Met behulp van de map()-functie kunnen we het kwadraat van elk getal berekenen. De lijst die aan map() werd gegeven was [2,3,4,5,6,7,8,9], en met behulp van de functie square() kregen we als uitvoer [4, 9, 16, 25, 36, 49, 64, 81].

De functie `map()` past de functie `square()` toe op alle items in de lijst. Zo neemt de functie bijvoorbeeld de variabele `my_list` en vult deze aan met het kwadraat van elk getal. De uitvoer wordt opgeslagen in de variabele `updated_list`.

Map() gebruiken met Python ingebouwde functies

De Python map() functie is een ingebouwde functie en kan ook worden gebruikt met andere ingebouwde functies die beschikbaar zijn in PythonIn dit voorbeeld gaan we gebruikmaken van de Python De ingebouwde functie `round()` rondt de gegeven waarden af.

Voorbeeld:

De lijst die ik heb is my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Ik heb de afgeronde waarden nodig voor elk item in de lijst, dus we gebruiken round() als functie voor map().

my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]
updated_list = map(round, my_list)
print(updated_list)
print(list(updated_list))

Output:

<map object at 0x000000E65F901748>
[3, 4, 4, 6, 6, 8, 8, 10]

De functie `round()` wordt toegepast op alle items in de lijst en retourneert een lijst met alle waarden afgerond, zoals in de uitvoer te zien is.

Map() gebruiken met een string als iterator

We kunnen ook gebruik maken van map() op een string. In PythonEen string gedraagt โ€‹โ€‹zich als een array, dus we kunnen hem gemakkelijk gebruiken binnen map().

In dit voorbeeld hebben we een functie `myMapFunc()` die de gegeven tekenreeks omzet naar hoofdletters. De functie `myMapFunc()` wordt doorgegeven aan de functie `map()`. De functie `map()` zorgt er vervolgens voor dat de gegeven tekenreeks naar hoofdletters wordt omgezet door deze door te geven aan `myMapFunc()`.

def myMapFunc(s):
    return s.upper()
my_str = "welcome to guru99 tutorials!"
updated_list = map(myMapFunc, my_str)
print(updated_list)
for i in updated_list:
    print(i, end="")

Output:

<map object at 0x000000DF2E711748>
WELCOME TO GURU99 TUTORIALS!

map() gebruiken met een lijst Numbers

Om met een lijst te werken in map(), nemen we een lijst met getallen en vermenigvuldigen we elk getal in de lijst met 10.

De lijst die we gaan gebruiken is [2,3,4,5,6,7,8,9]. De functie myMapFunc() zorgt ervoor dat het gegeven getal met 10 wordt vermenigvuldigd. De functie wordt samen met de lijst aan map() meegegeven.

Voorbeeld:

def myMapFunc(n):
    return n*10

my_list = [2,3,4,5,6,7,8,9]

updated_list = map(myMapFunc, my_list)
print(updated_list)
print(list(updated_list))

Output:

<map object at 0x000000EE2C061898>
[20, 30, 40, 50, 60, 70, 80, 90]

Het resultaat dat we zien, is dat elk getal in de lijst met 10 wordt vermenigvuldigd.

Map() gebruiken met Tuple

Een tupel is een object in Python Een tuple met door komma's gescheiden elementen tussen ronde haakjes. In dit voorbeeld nemen we een tuple met tekenreekswaarden. De functie die we gebruiken, zet de gegeven waarden om naar hoofdletters.

Voorbeeld:

def myMapFunc(n):
    return n.upper()

my_tuple = ('php','java','python','c++','c')

updated_list = map(myMapFunc, my_tuple)
print(updated_list)
print(list(updated_list))

Output:

<map object at 0x0000009C3C3A16A0>
['PHP', 'JAVA', 'PYTHON', 'C++', 'C']

De output die we krijgen is een tuple waarin alle waarden zijn omgezet naar hoofdletters.

Map() gebruiken met woordenboek

A woordenboek in Python wordt gemaakt met behulp van accolades ({}). Omdat het woordenboek een iterator is, kun je het gebruiken binnen de map()-functie. Laten we nu een woordenboek als iterator gebruiken binnen map().

Het volgende voorbeeld laat zien hoe een dictionary-iterator werkt binnen de map()-functie:

def myMapFunc(n):
    return n*10
my_dict = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_dict)
print(finalitems)
print(list(finalitems))

Output:

<map object at 0x0000007EB451DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Map() gebruiken met Set

Een set in Python is een ongeordende verzameling items tussen accolades ({}). Omdat set() ook een iterator is, kun je deze gebruiken binnen de map()-functie.

Hier volgt een werkend voorbeeld van het gebruik van een set als iterator binnen map():

def myMapFunc(n):
    return n*10
my_set = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_set)
print(finalitems)
print(list(finalitems))

Output:

<map object at 0x000000AC8F05DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Map() gebruiken met Lambda-functie

In Pythonworden lambda-expressies gebruikt om anonieme functies te construeren. U zult het trefwoord lambda moeten gebruiken, net zoals u def gebruikt om normale functies te definiรซren.

In dit voorbeeld gaan we de lambda-functie binnen map() gebruiken. De lambda-functie vermenigvuldigt elke waarde in de lijst met 10.

Voorbeeld:

my_list = [2,3,4,5,6,7,8,9]
updated_list = map(lambda x: x * 10, my_list)
print(updated_list)
print(list(updated_list))

Output:

<map object at 0x000000BD18B11898>
[20, 30, 40, 50, 60, 70, 80, 90]

Meerdere iterators gebruiken binnen de map()-functie

Voorbeeld 1: Twee lijstiterators doorgeven aan map()

Je kunt meerdere iterators, zoals een lijst, een tuple, enzovoort, tegelijkertijd naar de map()-functie sturen.

Als je bijvoorbeeld twee lijsten wilt optellen, kan dat met de functie `map()`. We gaan twee lijsten gebruiken, `my_list1` en `my_list2`.

In het onderstaande voorbeeld wordt het eerste item in my_list1 opgeteld bij het eerste item van my_list2. De functie myMapFunc() neemt items van my_list1 en my_list2 als invoer en retourneert de som van beide.

Hier volgt een werkend voorbeeld van het optellen van twee gegeven lijsten met behulp van de map()-functie.

def myMapFunc(list1, list2):
    return list1+list2

my_list1 = [2,3,4,5,6,7,8,9]
my_list2 = [4,8,12,16,20,24,28]

updated_list = map(myMapFunc, my_list1,my_list2)
print(updated_list)
print(list(updated_list))

Output:

<map object at 0x0000004D5F751860>
[6, 11, 16, 21, 26, 31, 36]

Voorbeeld 2: Een tuple en een lijstiterator doorgeven aan map()

We gaan in de `map()`-functie gebruikmaken van een lijst- en een tuple-iterator. De functie die aan `map()` wordt meegegeven, `myMapFunc()`, haalt de items uit de lijst en de tuple. De items worden samengevoegd met een underscore (_). Een werkend voorbeeld is hieronder te zien:

def myMapFunc(list1, tuple1):
    return list1+"_"+tuple1

my_list = ['a','b', 'b', 'd', 'e']
my_tuple = ('PHP','Java','Python','C++','C')

updated_list = map(myMapFunc, my_list,my_tuple)
print(updated_list)
print(list(updated_list))

Output:

<map object at 0x00000059F37BB4E0>
['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

Veelgestelde vragen

Beide methoden passen een bewerking toe op elk item. Een list comprehension is vaak beter leesbaar en retourneert direct een lijst, terwijl map() een lazy map-object retourneert en sneller kan zijn bij hergebruik van een bestaande benoemde functie.

Nee, `map()` verandert de oorspronkelijke iterable nooit. Het leest elk element, past je functie toe en produceert een nieuw, lui `map`-object, waarbij de bronlijst, tuple of string ongewijzigd blijft.

In Python 3. `map()` is lui: het retourneert een `map`-object dat pas waarden berekent wanneer er doorheen wordt geรฏtereerd. Dit bespaart geheugen bij grote hoeveelheden data. Wikkel het in een `list()`-object of loop er doorheen om de resultaten te verkrijgen.

`map()` transformeert elk item, `filter()` behoudt alleen items die aan een test voldoen, en `reduce()` (van functools) combineert alle items tot รฉรฉn enkele waarde. Samen bestrijken ze transformatie-, selectie- en aggregatiebewerkingen.

Wanneer iterables verschillen in lengte, stopt map() bij de kortste. Extra items in de langere iterables worden genegeerd, waardoor er geen foutmelding wordt gegenereerd en het resultaat overeenkomt met de kortste iterable.

Nee. Een map-object is een iterator die na รฉรฉn iteratie leeg is. Zodra je er doorheen loopt of de methode list() erop aanroept, is het leeg. Converteer het eerst naar een lijst als je het opnieuw wilt gebruiken.

In machine learning past map() voorbewerkingsfuncties toe op datasets, zoals het schalen van getallen, het tokeniseren van tekst of het transformeren van kenmerken, vรณรณr de training. Het biedt een overzichtelijke en functionele manier om dezelfde bewerking op veel voorbeelden uit te voeren.

Ja. GitHub Copilot vult map()-aanroepen automatisch aan met de juiste functie en iterables, en AI-tools kunnen lussen omzetten in map()-expressies en vervolgens je tests uitvoeren om te bevestigen dat het gedrag ongewijzigd is.

Vat dit bericht samen met: