Comprimir listas de diferentes tamaños usando funciones integradas
Aunque la función zip integrada no puede repetir la lista más corta al fusionar dos listas de diferentes tamaños, puede aprovechar la función itertools.cycle para lograr este resultado.
cycle del paquete Python itertools crea un iterador que devuelve repetidamente elementos de un iterable, incluso después de su agotamiento. Al combinar zip con ciclo, es posible manejar la discrepancia de tamaño entre las listas y garantizar que la lista más larga se repita según sea necesario.
Ejemplo:
A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]
# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)
En este ejemplo:
Resultado:
zip_list contendrá las siguientes tuplas como objeto generador:
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
Cómo funciona:
itertools.cycle crea una copia del iterable (en este caso, B) y devuelve repetidamente sus elementos. A medida que zip recorre A, empareja cada elemento con el siguiente elemento disponible del iterador cíclico.
Si A es más corto que B, el proceso comienza desde el principio de B una vez que se agota su iterador. Por el contrario, si A es más largo, el iterador B realiza un ciclo continuo para llenar el resto de la lista fusionada.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3