Cómo utilizar la función map() en Python

Aprenda a utilizar la función map() de Python. Domine la aplicación de funciones a iterables sin escribir bucles y compare mapas con listas por comprensión.

Pruebe esta solución en el Editor

Descripción general

Al procesar colecciones de datos, a menudo necesitarás aplicar una transformación específica a cada elemento de un iterable. Por ejemplo, convertir una lista de números de cadenas a números enteros o normalizar una matriz de cadenas de base de datos convirtiéndolas a minúsculas. En lugar de escribir bucles `for` detallados, Python proporciona una herramienta incorporada llamada `map()`.

La función `map(function, iterable)` acepta una función de transformación y un iterable como argumentos. Aplica la función a cada elemento del iterable y devuelve un objeto iterador (un objeto `mapa`). Debido a que se devuelve como un iterador, los cálculos se ejecutan de manera perezosa: los elementos solo se procesan a medida que se itera sobre ellos, lo que ahorra memoria para conjuntos de datos grandes.

Para obtener una representación de lista del objeto de mapa inmediatamente, debe convertir el resultado usando el constructor `list()`: `list(map(func, data))`. Puede pasar cualquier función estándar, función de biblioteca estándar (como `str` o `len`) o funciones anónimas personalizadas declaradas con la palabra clave `lambda` directamente a `map()` para su ejecución en línea.

Código y salida de ejecución

Este script demuestra la modificación de colecciones usando la función map() con transformaciones de cadenas, la asignación de elementos de lista a números y el uso de devoluciones de llamadas lambda.

map_function.py
Pruébelo en el 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)
Salida terminal
Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']

Implementación paso a paso

  • Identifique la función de transformación que desea aplicar a cada elemento de la colección.
  • Llame a map(function_name, iterable) para crear un iterador diferido de elementos transformados.
  • Envuelva la llamada map() dentro de list() si necesita acceder a todos los elementos como una lista estándar inmediatamente.
  • Combine map() con funciones lambda para realizar transformaciones en línea rápidas y únicas.

Preguntas frecuentes

¿Es map() mejor que la lista por comprensión?

La comunidad generalmente considera que las listas por comprensión son más legibles y pitónicas. Sin embargo, map() puede ser más rápido cuando se aplica una función integrada existente (como map(str, list)) porque ejecuta bucles de código C optimizados.

¿Puede map() tomar múltiples iterables?

¡Sí! Si la función de transformación toma varios argumentos, puede pasar varios iterables a map(). Por ejemplo, map(lambda x, y: x + y, list1, list2) agregará elementos por pares.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.