"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso compactar listas de comprimentos desiguais repetindo a mais curta?

Como posso compactar listas de comprimentos desiguais repetindo a mais curta?

Publicado em 2024-11-08
Navegar:739

How Can I Zip Unequal Length Lists by Repeating the Shorter One?

Zipando listas de tamanhos diferentes repetindo a mais curta

Ao tentar compactar duas listas com comprimentos desiguais, a função zip integrada falha curto, não repetindo a lista mais curta para corresponder à maior. Para superar isso, abordagens alternativas são necessárias.

Solução Usando itertools.cycle

A função itertools.cycle fornece a capacidade de iterar infinitamente sobre um iterável. Este recurso pode ser aproveitado para repetir a lista mais curta indefinidamente enquanto a compacta com a lista mais longa.

Implementação:

import itertools

A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

zip_list = zip(A, itertools.cycle(B)) if len(A) > len(B) else zip(itertools.cycle(A), B)

Nesta solução, usamos uma instrução condicional para determinar qual lista deve ser repetida. Se A for maior que B, usamos itertools.cycle para repetir B, e se B for maior que A, repetimos A.

O zip_list resultante conterá tuplas emparelhando elementos de A e B, com B sendo repetido conforme necessário para corresponder ao comprimento de A. Esta abordagem garante que todos os elementos de ambas as listas sejam emparelhados, com a lista mais curta repetida conforme necessário.

Tutorial mais recente Mais>

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