🎯 Zip em Python

Em poucas palavras

Definição técnica ou simplificada do conceito.


📝 Notas e Desenvolvimento


🔗 Conexões e Contexto


📚 Referências e Fontes

Citações Diretas

📂 Outros Conteúdos Preservados

Como Funciona

zip() pega um ou mais iteráveis como argumentos e “empacota” seus elementos correspondentes em tuplas.

Sintaxe: zip(*iteraveis)

  • *iteraveis: Um número variável de iteráveis (listas, tuplas, strings, etc.).

Exemplo Básico:

nomes = ("John", "Charles", "Mike")
sobrenomes = ("Jenny", "Christy", "Monica")
 
### Cria um objeto zip
 
pares = zip(nomes, sobrenomes)
 
### Para ver o conteúdo, você pode convertê-lo para uma lista ou tupla
 
print(list(pares))
 
### Saída: [('John', 'Jenny'), ('Charles', 'Christy'), ('Mike', 'Monica')]
 
 
 
### Ou iterar diretamente sobre ele
 
 
 
### for nome, sobrenome in zip(nomes, sobrenomes):
 
 
 
### print(f"{nome} {sobrenome}")
 

Comprimentos Diferentes dos Iteráveis

Se os iteráveis passados para zip() tiverem comprimentos diferentes, o iterador resultante terá o comprimento do iterável mais curto. Os elementos dos iteráveis mais longos que não têm um correspondente no iterável mais curto são simplesmente ignorados.

Exemplo com Comprimentos Diferentes:

aulas = ["Matemática", "Português", "História", "Geografia"]
notas = [90, 85, 78] # Uma nota a menos que as aulas
 
combinado = zip(aulas, notas)
print(list(combinado))
 
### Saída: [('Matemática', 90), ('Português', 85), ('História', 78)]
 
 
 
### 'Geografia' foi ignorada porque não havia uma nota correspondente.
 

Casos de Uso Comuns

  1. Iterar sobre Múltiplas Listas Simultaneamente:

    produtos = ['Maçã', 'Banana', 'Laranja']
    precos = [2.50, 1.75, 3.00]
     
    for produto, preco in zip(produtos, precos):
        print(f"{produto}: R${preco:.2f}")
    # Saída:
    # Maçã: R$2.50
    # Banana: R$1.75
    # Laranja: R$3.00
  2. Criar Dicionários:
    zip() é frequentemente usado em conjunto com a função dict() para criar dicionários a partir de duas listas (uma para chaves e outra para valores).

    chaves = ['nome', 'idade', 'cidade']
    valores = ['Alice', 30, 'Nova York']
     
    pessoa = dict(zip(chaves, valores))
    print(pessoa)
    # Saída: {'nome': 'Alice', 'idade': 30, 'cidade': 'Nova York'}
  3. “Deszipar” (Unzipping) uma Sequência:
    Você pode usar o operador * (desempacotamento de sequências) com zip() para reverter a operação, ou seja, transformar uma lista de tuplas de volta em tuplas de listas (ou outras sequências).

    coordenadas = [(1, 2), (3, 4), (5, 6)]
     
    # Deszipa as coordenadas em duas tuplas separadas para x e y
    x_coords, y_coords = zip(*coordenadas)
     
    print(f"Coordenadas X: {x_coords}") # Saída: Coordenadas X: (1, 3, 5)
    print(f"Coordenadas Y: {y_coords}") # Saída: Coordenadas Y: (2, 4, 6)

A função zip() é uma ferramenta poderosa para trabalhar com múltiplos iteráveis de forma sincronizada, tornando o código mais limpo e eficiente.

:: Referência :: Função zip() do Python (w3schools.com)