La función map() de Python se utiliza para aplicar una función a todos los elementos de un iterable especificado y devolver un objeto mapa. El objeto mapa de Python es un iterador, por lo que podemos iterar sobre sus elementos. También podemos convertir el objeto mapa en objetos de secuencia como lista, tupla, etc., utilizando sus funciones de fábrica.
La función map() de Python
La sintaxis de la función map() de Python es:
map(function, iterable, ...)
Podemos pasar múltiples argumentos iterables a la función map(), en ese caso, la función especificada debe tener tantos argumentos. La función se aplicará a estos elementos iterables en paralelo. Con múltiples argumentos iterables, el iterador del mapa se detiene cuando el iterable más corto se agota.
Ejemplo de map() de Python
Veamos una función para ser utilizada con la función map().
def to_upper_case(s):
return str(s).upper()
Es una función simple que devuelve la representación en mayúsculas de la cadena de entrada. También estoy definiendo una función de utilidad para imprimir elementos del iterador. La función imprimirá elementos del iterador con espacios en blanco y se reutilizará en todos los fragmentos de código.
def print_iterator(it):
for x in it:
print(x, end=' ')
print('') # for new line
Veamos un ejemplo de la función map() con diferentes tipos de iterables.
Python map() con cadena
# map() con cadena
map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)
Resultado:
<class 'map'>
A B C
Python map() con tupla
# map() con tupla
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)
Resultado:
1 A ABC
Python map() con lista
map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)
Resultado:
X A ABC
Convirtiendo map a lista, tupla, conjunto
Dado que el objeto map es un iterador, podemos pasarlo como argumento a los métodos de fábrica para crear una lista, tupla, conjunto, etc.
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)
Resultado:
['A', 'B', 'C']
{'C', 'B', 'A'}
('A', 'B', 'C')
Python map() con lambda
Podemos usar funciones lambda con map() si no queremos reutilizarla. Esto es útil cuando nuestra función es pequeña y no queremos definir una nueva función.
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() con múltiples argumentos
Veamos un ejemplo de cómo usar la función map() con múltiples argumentos iterables.
# map() con múltiples argumentos iterables
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
Observa que nuestra función tiene dos argumentos. El iterador de map resulta de aplicar esta función a los dos elementos iterables en paralelo. Veamos qué sucede cuando los iterables tienen tamaños diferentes.
# map() con múltiples argumentos iterables de tamaños diferentes
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
Entonces, cuando los argumentos tienen tamaños diferentes, la función map se aplica a los elementos hasta que uno de ellos se agota.
Python map() con función None
Veamos qué sucede cuando pasamos la función como None.
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
Puedes consultar el script completo de Python y más ejemplos en Python en nuestro Repositorio de GitHub.
Referencia: Documentación Oficial
Source:
https://www.digitalocean.com/community/tutorials/python-map-function