Zipando listas de tamanhos diferentes usando funções integradas
Embora a função zip integrada não seja capaz de repetir a lista mais curta ao mesclar duas listas de tamanhos diferentes, você pode aproveitar a função itertools.cycle para alcançar esse resultado.
cycle do pacote Python itertools cria um iterador que retorna elementos repetidamente de um iterável, mesmo após seu esgotamento. Ao combinar zip com ciclo, é possível lidar com a discrepância de tamanho entre as listas e garantir que a lista mais longa seja repetida conforme necessário.
Exemplo:
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)
Neste exemplo:
Resultado:
zip_list conterá as seguintes tuplas como um objeto gerador:
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
Como funciona:
itertools.cycle cria uma cópia do iterável (neste caso, B) e retorna repetidamente seus elementos. À medida que o zip itera por A, ele emparelha cada elemento com o próximo elemento disponível no iterador de ciclo.
Se A for menor que B, o processo recomeçará do início de B quando seu iterador se esgotar. Por outro lado, se A for mais longo, o iterador B circulará continuamente para preencher o restante da lista mesclada.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3