Python map() Funktion
Die Python map() Funktion wird verwendet, um eine Funktion auf alle Elemente eines angegebenen Iterierbaren anzuwenden und ein map-Objekt zurückzugeben. Ein Python map-Objekt ist ein Iterator, daher können wir über seine Elemente iterieren. Wir können das map-Objekt auch in Sequenzobjekte wie Liste, Tupel usw. mit deren Factory-Funktionen umwandeln.
Python map() Funktion
Die Syntax der Python map() Funktion ist:
map(function, iterable, ...)
Wir können mehrere iterierbare Argumente an die map() Funktion übergeben, in diesem Fall muss die angegebene Funktion so viele Argumente haben. Die Funktion wird auf diese iterierbaren Elemente parallel angewendet. Mit mehreren iterierbaren Argumenten stoppt der map-Iterator, wenn das kürzeste Iterierbare erschöpft ist.
Python map() Beispiel
Lassen Sie uns eine Funktion schreiben, die mit der map() Funktion verwendet wird.
def to_upper_case(s):
return str(s).upper()
Es ist eine einfache Funktion, die die Großbuchstabendarstellung des Eingabeobjekts zurückgibt. Ich definiere auch eine Hilfsfunktion, um die Elemente des Iterators zu drucken. Die Funktion druckt die Elemente des Iterators mit Leerzeichen und wird in allen Code-Snippets wiederverwendet.
def print_iterator(it):
for x in it:
print(x, end=' ')
print('') # for new line
Python map() mit String
map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)
Output:
<class 'map'>
A B C
Python map() mit Tupel
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)
Output:
1 A ABC
Python map() mit Liste
map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)
Output:
X A ABC
Konvertierung von map in Liste, Tupel, Set
Da das map-Objekt ein Iterator ist, können wir es als Argument an die Factory-Methoden zur Erstellung einer Liste, eines Tupels, eines Sets usw. übergeben.
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() mit Lambda
Wir können Lambda-Funktionen mit map() verwenden, wenn wir sie nicht wiederverwenden möchten. Dies 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)
Output:
2 4 6 8
Python map() mit mehreren Argumenten
Lassen Sie uns ein Beispiel für die Verwendung der map() Funktion mit mehreren iterierbaren Argumenten betrachten.
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)
Output: 5 12 21 32 Beachten Sie, dass unsere Funktion zwei Argumente hat. Der Output-Map-Iterator ist das Ergebnis der parallelen Anwendung dieser Funktion auf die beiden iterierbaren Elemente. Schauen wir uns an, was passiert, wenn die Iterablen unterschiedlich groß sind.
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)
Output:
5 12 21 32
5 12 21 32
Wenn also die Argumente unterschiedlich groß sind, wird die map-Funktion auf die Elemente angewendet, bis eines von ihnen erschöpft ist.
Python map() mit Funktion None
Lassen Sie 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)
Output:
Traceback (most recent call last):
File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_map_example.py", line 3, in
for x in map_iterator:
TypeError: 'NoneType' object is not callable