Python map() functie

De Python map() functie wordt gebruikt om een functie toe te passen op alle elementen van een opgegeven iterable en retourneert een map object. Het Python map object is een iterator, dus we kunnen erover itereren. We kunnen het map object ook converteren naar sequentie-objecten zoals een lijst, tupel, enz. met behulp van hun fabrieksfuncties.

Python map() functie

De syntaxis van de Python map() functie is:

map(function, iterable, ...)

We kunnen meerdere iterable argumenten aan de map() functie doorgeven, in dat geval moet de opgegeven functie evenveel argumenten hebben. De functie wordt toegepast op deze iterable elementen parallel. Met meerdere iterable argumenten stopt de map iterator wanneer de kortste iterable is uitgeput.

Voorbeeld van de Python map() functie

Laten we een functie schrijven die met de map() functie kan worden gebruikt.

def to_upper_case(s):
    return str(s).upper()

Het is een eenvoudige functie die de hoofdletters van de invoerobject teruggeeft. Ik definieer ook een hulpprogramma functie om iterator elementen af te drukken. De functie drukt iterator elementen af met witruimte en zal worden hergebruikt in alle codevoorbeelden.

def print_iterator(it):
    for x in it:
        print(x, end=' ')
    print('')  # for new line

Laten we eens kijken naar een voorbeeld van de map() functie met verschillende soorten iterables.

Python map() met string



# map() met string


map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)

Output:

<class 'map'>
A B C 

Python map() met tuple



# map() met tuple


map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)

Output:

1 A ABC 

Python map() met lijst

map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)

Output:

X A ABC 

Omzetting van map naar lijst, tuple, set

Omdat een map-object een iterator is, kunnen we het doorgeven als argument aan de factory-methoden voor het maken van een lijst, tuple, set, enz.

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_list = list(map_iterator)
print(my_list)

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_set = set(map_iterator)
print(my_set)

map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_tuple = tuple(map_iterator)
print(my_tuple)

Output:

['A', 'B', 'C']
{'C', 'B', 'A'}
('A', 'B', 'C')

Python map() met lambda

We kunnen lambda-functies gebruiken met map() als we het niet opnieuw willen gebruiken. Dit is handig wanneer onze functie klein is en we geen nieuwe functie willen definiëren.

list_numbers = [1, 2, 3, 4]

map_iterator = map(lambda x: x * 2, list_numbers)
print_iterator(map_iterator)

Uitvoer:

2 4 6 8 

Python map() meerdere argumenten

Laten we eens kijken naar een voorbeeld van het gebruik van de map() functie met meerdere iterable argumenten.

# map() met meerdere iterable argumenten
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)

Uitvoer: 5 12 21 32 Merk op dat onze functie twee argumenten heeft. De uitvoer van de map iterator is het resultaat van het toepassen van deze functie op de twee iterable elementen parallel. Laten we eens kijken wat er gebeurt wanneer de iterables van verschillende groottes zijn.

# map() met meerdere iterable argumenten van verschillende groottes
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8, 9, 10)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)

map_iterator = map(lambda x, y: x * y, tuple_numbers, list_numbers)
print_iterator(map_iterator)

Uitvoer:

5 12 21 32 
5 12 21 32 

Dus wanneer de argumenten van verschillende groottes zijn, wordt de map-functie toegepast op de elementen totdat een van hen is uitgeput.

Python map() met functie None

Laten we eens kijken wat er gebeurt wanneer we de functie als None doorgeven.

map_iterator = map(None, 'abc')
print(map_iterator)
for x in map_iterator:
    print(x)

Uitvoer:

Traceback (most recent call last):
  File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_map_example.py", line 3, in <module>
    for x in map_iterator:
TypeError: 'NoneType' object is not callable

U kunt de volledige Python-script en meer Python-voorbeelden bekijken in onze GitHub Repository.

Referentie: Officiële Documentatie

Source:
https://www.digitalocean.com/community/tutorials/python-map-function