Come utilizzare la funzione map() in Python

Scopri come utilizzare la funzione map() di Python. Padroneggia l'applicazione di funzioni agli iterabili senza scrivere cicli e confronta la mappa con la comprensione dell'elenco.

Prova questa soluzione nell'editor

Panoramica

Quando elabori raccolte di dati, spesso dovrai applicare una trasformazione specifica a ogni singolo elemento in un iterabile. Ad esempio, convertire un elenco di numeri di stringa in numeri interi o normalizzare un array di stringhe del database convertendoli in lettere minuscole. Invece di scrivere cicli "for" dettagliati, Python fornisce uno strumento integrato chiamato "map()".

La funzione `map(function, iterable)` accetta una funzione di trasformazione e un iterabile come argomenti. Applica la funzione a ciascun elemento dell'iterabile e restituisce un oggetto iteratore (un oggetto `mappa`). Poiché viene restituito come iteratore, i calcoli vengono eseguiti pigramente: gli elementi vengono elaborati solo mentre si esegue l'iterazione su di essi, il che consente di risparmiare memoria per set di dati di grandi dimensioni.

Per ottenere immediatamente una rappresentazione di lista dell'oggetto mappa, è necessario eseguire il cast del risultato utilizzando il costruttore `list()`: `list(map(func, data))`. Puoi passare qualsiasi funzione standard, funzione della libreria standard (come `str` o `len`) o funzioni anonime personalizzate dichiarate con la parola chiave `lambda` direttamente a `map()` per l'esecuzione in linea.

Codice e output di esecuzione

Questo script illustra la modifica delle raccolte utilizzando la funzione map() con trasformazioni di stringhe, mappando gli elementi dell'elenco in numeri e utilizzando i callback lambda.

map_function.py
Prova nell'editor
# 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)
Uscita terminale
Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']

Implementazione passo dopo passo

  • Identifica la funzione di trasformazione che desideri applicare a ogni elemento della raccolta.
  • Chiama map(function_name, iterable) per creare un iteratore pigro di elementi trasformati.
  • Avvolgi la chiamata map() all'interno di list() se hai bisogno di accedere immediatamente a tutti gli elementi come un elenco standard.
  • Combina map() con le funzioni lambda per trasformazioni in linea rapide e una tantum.

Domande frequenti

map() è migliore delle comprensioni delle liste?

Le comprensioni delle liste sono generalmente considerate più leggibili e pitoniche dalla comunità. Tuttavia, map() può essere più veloce quando si applica una funzione integrata esistente (come map(str, list)) perché esegue cicli di codice C ottimizzati.

map() può accettare più iterabili?

Sì! Se la funzione di trasformazione accetta più argomenti, puoi passare più iterabili a map(). Ad esempio, map(lambda x, y: x + y, list1, list2) aggiungerà elementi a coppie.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.