So verwenden Sie die Funktion „map()“ in Python

Erfahren Sie, wie Sie die Funktion „map()“ von Python verwenden. Beherrschen Sie die Anwendung von Funktionen auf Iterables, ohne Schleifen zu schreiben, und vergleichen Sie Karten- und Listenverständnisse.

Probieren Sie diese Lösung im Editor aus

Übersicht

Bei der Verarbeitung von Datensammlungen müssen Sie häufig eine bestimmte Transformation auf jedes einzelne Element in einer Iterable anwenden. Konvertieren Sie beispielsweise eine Liste mit Zeichenfolgenzahlen in Ganzzahlen oder normalisieren Sie ein Datenbankarray mit Zeichenfolgen durch Konvertieren in Kleinbuchstaben. Anstatt ausführliche „for“-Schleifen zu schreiben, bietet Python ein integriertes Tool namens „map()“.

Die Funktion „map(function, iterable)“ akzeptiert eine Transformationsfunktion und eine Iterable als Argumente. Es wendet die Funktion auf jedes Element des Iterables an und gibt ein Iteratorobjekt (ein „Map“-Objekt) zurück. Da es als Iterator zurückgegeben wird, werden die Berechnungen verzögert ausgeführt: Elemente werden nur verarbeitet, während Sie über sie iterieren, was bei großen Datensätzen Speicherplatz spart.

Um sofort eine Listendarstellung des Kartenobjekts zu erhalten, müssen Sie das Ergebnis mit dem Konstruktor „list()“ umwandeln: „list(map(func, data))“. Sie können jede Standardfunktion, Standardbibliotheksfunktion (wie „str“ oder „len“) oder benutzerdefinierte anonyme Funktionen, die mit dem Schlüsselwort „lambda“ deklariert wurden, direkt an „map()“ zur Inline-Ausführung übergeben.

Code- und Ausführungsausgabe

Dieses Skript demonstriert das Ändern von Sammlungen mithilfe der Funktion „map()“ mit Zeichenfolgentransformationen, das Zuordnen von Listenelementen zu Zahlen und die Verwendung von Lambda-Rückrufen.

# 1. Map string conversion over a list of numbers
numbers = [1, 2, 3, 4]
string_numbers = list(map(str, numbers))
print("Mapped to strings:", string_numbers)

# 2. Square numbers using a lambda function inside map()
squared = list(map(lambda x: x**2, numbers))
print("Squared numbers:", squared)

# 3. Apply custom logic function to items
def normalize_name(name):
    return name.strip().capitalize()

names = ["  alice", "BOB  ", " charlie "]
clean_names = list(map(normalize_name, names))
print("Clean names list:", clean_names)
Terminal-Ausgabe
Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']

Schrittweise Umsetzung

  • Identifizieren Sie die Transformationsfunktion, die Sie auf jedes Element in der Sammlung anwenden möchten.
  • Rufen Sie „map(function_name, iterable)“ auf, um einen Lazy-Iterator transformierter Elemente zu erstellen.
  • Schließen Sie den Aufruf von „map()“ in „list()“ ein, wenn Sie sofort auf alle Elemente als Standardliste zugreifen müssen.
  • Kombinieren Sie map() mit Lambda-Funktionen für schnelle, einmalige Inline-Transformationen.

Häufig gestellte Fragen

Ist map() besser als Listenverständnis?

Listenverständnisse werden von der Community im Allgemeinen als besser lesbar und pythonisch angesehen. Allerdings kann map() schneller sein, wenn eine vorhandene integrierte Funktion (wie map(str, list)) angewendet wird, da es optimierte C-Code-Schleifen ausführt.

Kann map() mehrere Iterables annehmen?

Ja! Wenn die Transformationsfunktion mehrere Argumente akzeptiert, können Sie mehrere Iterables an map() übergeben. Beispielsweise fügt „map(lambda x, y: x + y, list1, list2)“ Elemente paarweise hinzu.

Verwandte Themen

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.