Python map() Funktion
Die Python-map()-Funktion wird verwendet, um eine Funktion auf alle Elemente eines angegebenen Iterables anzuwenden und ein Map-Objekt zurückzugeben. Das Python-Map-Objekt ist ein Iterator, sodass wir über seine Elemente iterieren können. Wir können das Map-Objekt auch in Sequenzobjekte wie Liste, Tuple usw. umwandeln, indem wir deren Fabrikfunktionen verwenden.
Python map() Funktion
Die Syntax der Python map() Funktion ist:
map(function, iterable, ...)
Wir können mehrere iterable Argumente an die map()-Funktion übergeben. In diesem Fall muss die angegebene Funktion genau so viele Argumente haben. Die Funktion wird parallel auf diese iterable Elemente angewendet. Bei mehreren iterable Argumenten stoppt der map-Iterator, wenn das kürzeste Iterable erschöpft ist.
Python map() Beispiel
Lass uns eine Funktion schreiben, die mit der map() Funktion verwendet werden kann.
def to_upper_case(s):
return str(s).upper()
Es ist eine einfache Funktion, die die Großbuchstaben-Darstellung des Eingabeobjekts zurückgibt. Ich definiere auch eine Hilfsfunktion, um Iterator-Elemente auszugeben. Die Funktion wird die Iterator-Elemente mit Leerzeichen ausgeben und wird in allen Code-Schnipseln wiederverwendet.
def print_iterator(it):
for x in it:
print(x, end=' ')
print('') # for new line
Lassen Sie uns ein Beispiel für die map() Funktion mit verschiedenen Arten von Iterables ansehen.
Python map() mit Zeichenfolge
map() with string
map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)
Ausgabe :
<class 'map'>
A B C
Python map() mit Tuple
map() with tuple
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)
Ausgabe :
1 A ABC
Python map() mit Liste
map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)
Ausgabe :
X A ABC
Karte in Liste, Tupel, Menge umwandeln
Da das Map-Objekt ein Iterator ist, können wir es als Argument an die Fabrikmethoden übergeben, um eine Liste, ein Tupel, ein Set usw. zu erstellen.
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)
Ausgabe :
['A', 'B', 'C']
{'C', 'B', 'A'}
('A', 'B', 'C')
Python map() mit lambda
Wir können Lambda-Funktionen mit map() verwenden, wenn wir sie nicht wiederverwenden möchten. Das ist nützlich, wenn unsere Funktion klein ist und wir keine neue Funktion definieren möchten.
list_numbers = [1, 2, 3, 4]
map_iterator = map(lambda x: x * 2, list_numbers)
print_iterator(map_iterator)
Ausgabe :
2 4 6 8
Python map() mehrere Argumente
Lass uns ein Beispiel für die Verwendung der map()-Funktion mit mehreren iterierbaren Argumenten ansehen.
map() with multiple iterable arguments
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)
Ausgabe: 5 12 21 32 Beachten Sie, dass unsere Funktion zwei Argumente hat. Der Ausgabelisten-Iterator ist das Ergebnis der Anwendung dieser Funktion auf die beiden iterierbaren Elemente parallel. Lassen Sie uns sehen, was passiert, wenn die Iterierbaren unterschiedliche Größen haben.
map() with multiple iterable arguments of different sizes
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)
Ausgabe :
5 12 21 32
5 12 21 32
Wenn die Argumente also unterschiedliche Größen haben, wird die Map-Funktion auf die Elemente angewendet, bis eines davon erschöpft ist.
Python map() mit Funktion None
Lass uns sehen, was passiert, wenn wir die Funktion als None übergeben.
map_iterator = map(None, 'abc')
print(map_iterator)
for x in map_iterator:
print(x)
Ausgabe :
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
Sie können das vollständige Python-Skript und weitere Python-Beispiele aus unserem GitHub-Repository abrufen.
Referenz: Offizielle Dokumentation
