Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Mapeo (map) Python: Funciones

Imagina que tenemos una lista de usuarios y queremos extraer solo sus nombres:

users = [
  { 'name': 'Juan', 'age': 19 },
  { 'name': 'Sofía', 'age': 1 },
  { 'name': 'Carlos', 'age': 4 },
  { 'name': 'Mateo', 'age': 16 },
]

result = []
for user in users:
  result.append(user['name'])

print(result) # => ['Juan', 'Sofía', 'Carlos', 'Mateo']

Ahora, si queremos extraer las edades, repetimos el mismo código:

result = []
for user in users:
  result.append(user['age'])

print(result) # => [19, 1, 4, 16]

Patrón repetitivo:

  • Se recorre la lista con for.
  • Se extrae un valor específico.
  • Se almacena en una nueva lista.

💡 Podemos simplificar esto usando map(), una función de orden superior que transforma colecciones sin necesidad de escribir ciclos manualmente.

Transformación eficiente de datos con map()

map() aplica una función a cada elemento de una colección y devuelve un iterador con los valores transformados.

names = map(lambda user: user['name'], users)
list(names) # => ['Juan', 'Sofía', 'Carlos', 'Mateo']

map() recibe:

  • Una función que define la transformación.
  • La colección sobre la cual se aplica.
  • Retorna un iterador, no una lista.

Podemos convertirlo en una lista con list():

ages = map(lambda user: user['age'], users)
list(ages) # => [19, 1, 4, 16]

O definir el callback por separado:

obtener_edad = lambda user: user['age']
list(map(obtener_edad, users)) # => [19, 1, 4, 16]

Ventajas de map() sobre for

✅ Código más corto y limpio.

✅ Evita lógica repetitiva (el for se maneja internamente).

✅ Usa evaluación perezosa, procesando elementos bajo demanda.

Ejemplo de transformación numérica con map():

numeros = [5, 2, 3]

# Elevar al cuadrado cada número
cuadrados = map(lambda num: num ** 2, numeros)
list(cuadrados) # => [25, 4, 9]

# Sumar 3 a cada número
mas_tres = map(lambda num: num + 3, numeros)
list(mas_tres) # => [8, 5, 6]

Transforma listas sin necesidad de ciclos explícitos.

Implementando nuestra propia función map()

Podemos construir una versión simplificada de map() usando generadores:

def mi_map(callback, coleccion):
    for item in coleccion:
        yield callback(item)  # Genera el nuevo valor

numeros = [5, 2, 3]
cuadrados = mi_map(lambda num: num ** 2, numeros)
list(cuadrados) # => [25, 4, 9]

mi_map() no sabe qué hacer con cada elemento, solo aplica la función recibida. Usa yield, lo que la convierte en una función perezosa (no almacena los resultados en memoria).

Resumen

  • map() permite transformar colecciones sin escribir ciclos manuales.
  • Es más eficiente, evita repeticiones y usa evaluación perezosa.
  • Puede combinarse con list(), set() o tuple() para obtener estructuras finales.
  • Facilita el código funcional, enfocándose en la transformación y no en el cómo.

Este enfoque se usa en procesamiento de datos, transformación de APIs y muchas aplicaciones prácticas.


Materiales adicionales

  1. Función map

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY