Dividiendo una lista de Python con map()
Uno de los casos de uso comunes de la función map()
es dividir una lista de Python en partes más pequeñas. Esto puede ser útil cuando necesitas procesar un gran conjunto de datos en fragmentos más pequeños o cuando deseas aplicar diferentes operaciones a diferentes partes de una lista.
Para dividir una lista utilizando map()
, puedes combinarla con la función zip()
, que empareja elementos de múltiples iterables.
Aquí tienes un ejemplo:
## Example: Splitting a list into chunks of size 2
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chunk_size = 2
chunked_list = list(map(list, zip(*[iter(my_list)] * chunk_size)))
print(chunked_list)
## Output: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
En este ejemplo, primero creamos una lista my_list
con 10 elementos. Luego definimos un chunk_size
de 2, lo que significa que queremos dividir la lista en fragmentos de 2 elementos cada uno.
La función map()
se utiliza en combinación con zip()
para lograr la división de la lista. Así es cómo funciona:
iter(my_list)
crea un iterador para la lista my_list
.
[iter(my_list)] * chunk_size
crea una lista de chunk_size
(2 en este caso) iteradores, todos apuntando al mismo iterador de my_list
.
zip(*[iter(my_list)] * chunk_size)
utiliza la función zip()
para emparejar los elementos de los iteradores, dividiendo efectivamente la lista en fragmentos de tamaño chunk_size
.
map(list, zip(*[iter(my_list)] * chunk_size))
aplica la función list()
a cada fragmento, convirtiendo los objetos zip
en listas.
- El objeto
map
resultante se convierte en una lista utilizando list()
para obtener la lista final dividida en fragmentos.
Puedes ajustar el valor de chunk_size
para dividir la lista en fragmentos de diferentes tamaños según tus necesidades.
Otro ejemplo de división de una lista utilizando map()
y zip()
es convertir una lista de cadenas en una lista de listas, donde cada lista interna representa una palabra:
## Example: Splitting a list of strings into a list of lists of words
sentence = "The quick brown fox jumps over the lazy dog."
words_list = sentence.split()
word_lengths = list(map(len, words_list))
print(word_lengths)
## Output: [3, 5, 5, 3, 5, 4, 3, 3]
words_by_length = list(map(list, zip(words_list, word_lengths)))
print(words_by_length)
## Output: [['The', 3], ['quick', 5], ['brown', 5], ['fox', 3], ['jumps', 5], ['over', 4], ['the', 3], ['lazy', 3], ['dog.', 4]]
En este ejemplo, primero dividimos la frase en una lista de palabras utilizando el método split()
. Luego utilizamos map()
para obtener la longitud de cada palabra y la almacenamos en la lista word_lengths
.
Finalmente, utilizamos map()
y zip()
para crear una lista de listas, donde cada lista interna contiene una palabra y su longitud.
Al dominar el uso de map()
y zip()
para la división de listas, puedes escribir código Python más conciso y eficiente, especialmente cuando se trata de grandes conjuntos de datos o estructuras de datos complejas.