Como usar a função zip() em Python (combinar iteráveis)
Aprenda como usar a função zip() do Python para combinar vários iteráveis em paralelo. Domine criações de dicionário, descompacte lógica e lide com incompatibilidades de comprimento.
Visão geral
Ao iterar conjuntos de dados, muitas vezes você precisará processar várias listas relacionadas em paralelo. Por exemplo, emparelhar uma lista de nomes de usuários com uma lista de IDs de usuários ou combinar coordenadas de valores X e Y. Em vez de loops aninhados ou acessar itens usando contadores de indexação de lista, Python fornece a elegante função `zip()`.
A função `zip(*iterables)` pega vários iteráveis como argumentos e os agrega, retornando um iterador de tuplas onde a i-ésima tupla contém o i-ésimo elemento de cada um dos iteráveis de entrada. Isso permite que você percorra facilmente duas ou mais coleções simultaneamente com um único loop `for`.
Por padrão, `zip()` para de combinar quando o iterável de entrada mais curto se esgota. Quaisquer elementos restantes nos iteráveis mais longos são descartados. Se você deseja emparelhar elementos até que o iterável mais longo se esgote, preenchendo os valores ausentes com um espaço reservado, o Python fornece `zip_longest()` no módulo `itertools` da biblioteca padrão.
Saída de código e execução
Este script demonstra a iteração de lista paralela, criando um dicionário usando zip e lidando com incompatibilidades usando zip_longest.
from itertools import zip_longest
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 95]
# 1. Basic Zipping in a loop
print("--- Parallel Iteration ---")
for name, score in zip(names, scores):
print(f"{name} scored {score}")
# 2. Creating a dictionary from two lists
user_dict = dict(zip(names, scores))
print("\nCreated Dictionary:", user_dict)
# 3. Handling unequal list lengths with zip_longest
extra_names = ["Alice", "Bob", "Charlie", "David"]
short_scores = [85, 90]
# Standard zip truncates
print("\nStandard zip output:", list(zip(extra_names, short_scores)))
# zip_longest fills missing values
zipped_long = list(zip_longest(extra_names, short_scores, fillvalue="N/A"))
print("zip_longest output:", zipped_long)--- Parallel Iteration ---
Alice scored 85
Bob scored 90
Charlie scored 95
Created Dictionary: {'Alice': 85, 'Bob': 90, 'Charlie': 95}
Standard zip output: [('Alice', 85), ('Bob', 90)]
zip_longest output: [('Alice', 85), ('Bob', 90), ('Charlie', 'N/A'), ('David', 'N/A')]Implementação passo a passo
- Passe as múltiplas listas ou iteráveis que deseja combinar para a função zip().
- Descompacte as tuplas geradas em uma instrução de loop for para iterações paralelas limpas.
- Converta o objeto zip em um dicionário usando dict(zip(keys_list,values_list)) para mapeamento.
- Importe itertools.zip_longest para combinar listas de comprimentos desiguais sem perder valores finais.
Perguntas frequentes
Como faço para "descompactar" uma sequência compactada de tuplas?
Você pode descompactar uma sequência de volta em listas separadas usando o operador de descompactação *: list(zip(*zipped_tuples)).
Zip() duplica os elementos na memória?
Não, zip() retorna um iterador que produz elementos sob demanda, tornando-o extremamente eficiente em termos de memória.
Tópicos Relacionados
Aprenda como fazer loop ou iterar em um dicionário Python. Descubra métodos para fazer loop em chaves, valores e pares de valores-chave com exemplos limpos e executáveis.
Como mesclar duas listas em PythonAprenda as melhores maneiras de mesclar e combinar duas listas em Python. Compare o operador plus, o método de extensão, a descompactação de lista e as opções de cadeia.
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Funções Python
Domine as funções do Python. Aprenda como escrever código reutilizável usando def, definir argumentos, retornar valores e compreender o escopo local e globalmente.
Folha de referências das funções do módulo matemático Python
Guia de referência rápida para a biblioteca padrão matemática do Python. Aprenda a usar funções trigonométricas, logarítmicas, de arredondamento e aritméticas.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.