Python map() Funktion

Python map() Funktion wird verwendet, um eine Funktion auf alle Elemente des angegebenen Iterators anzuwenden und ein Map-Objekt zurückzugeben. Das 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. umwandeln, indem wir ihre Konstruktionsfunktionen verwenden.

Python map() Funktion

Die Syntax der Python map() Funktion lautet:

map(function, iterable, ...)

Wir können mehrere iterable Argumente an die map() Funktion übergeben, in diesem Fall muss die angegebene Funktion so viele Argumente haben. Die Funktion wird auf diese iterable Elemente parallel angewendet. Bei mehreren iterable Argumenten endet der Map-Iterator, wenn das kürzeste Iterable erschöpft ist.

Beispiel der Python map() Funktion

Lassen Sie uns eine Funktion schreiben, die mit der map() Funktion verwendet werden soll.

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

Es handelt sich um eine einfache Funktion, die die Großschreibung der Zeichenkettenrepräsentation des Eingabeobjekts zurückgibt. Ich definiere auch eine Hilfsfunktion zum Drucken der Iterator-Elemente. Die Funktion gibt Iterator-Elemente mit Leerzeichen aus 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 betrachten.

Python map() mit String

# 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() 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 

Umwandeln von map in Liste, Tupel, Set

Da das map-Objekt ein Iterator ist, können wir es als Argument an die Factory-Methoden ü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)

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() mehrere Argumente

Werfen wir einen Blick auf ein Beispiel zur Verwendung der map() Funktion mit mehreren iterierbaren Argumenten.

# map() mit mehreren iterierbaren 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)

Output: 5 12 21 32 Beachten Sie, dass unsere Funktion zwei Argumente hat. Der Ausgabe-Map-Iterator ist das Ergebnis der Anwendung dieser Funktion auf die zwei iterierbaren Elemente parallel. Schauen wir uns an, was passiert, wenn die Iterablen unterschiedliche Größen haben.

# map() mit mehreren iterierbaren Argumenten unterschiedlicher Größe
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 die Argumente unterschiedliche Größen haben, wird die map-Funktion auf die Elemente angewendet, bis eines von ihnen erschöpft ist.

Python map() mit Funktion None

Schauen wir uns an, 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 <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 überprüfen.

Referenz: Offizielle Dokumentation

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