Skip to content

Como Combinar Duas Listas em Python com Facilidade

Python é conhecido por sua legibilidade e sintaxe elegante, e vem carregado com várias funções internas para facilitar a vida dos desenvolvedores. Entre elas está a função zip(), uma ferramenta versátil para iterar sobre várias listas em paralelo. Este guia oferecerá uma visão detalhada da função zip() em Python, mostrando como percorrer várias listas e criar dicionários rapidamente.

Deseja criar rapidamente visualizações de dados a partir de um dataframe do Pandas com zero código?

PyGWalker é uma biblioteca Python para Análise Exploratória de Dados com Visualização. PyGWalker (opens in a new tab) pode simplificar seu fluxo de trabalho de análise de dados e visualização de dados no Jupyter Notebook, transformando seu dataframe pandas (e polars dataframe) em uma interface de usuário semelhante ao Tableau para exploração visual.

PyGWalker para visualização de dados (opens in a new tab)

Entendendo a Função zip() em Python

A função zip() é uma função interna do Python que combina elementos de dois ou mais objetos iteráveis (como listas, tuplas ou conjuntos) em tuplas. A função retorna um iterador que gera essas tuplas. Se os iteradores passados tiverem tamanhos diferentes, o iterador com menos elementos determina o tamanho da saída gerada.

list1 = ["a", "b", "c"]
list2 = [1, 2, 3]
combinadas = zip(list1, list2)
print(list(combinadas))

Isso irá imprimir:

[('a', 1), ('b', 2), ('c', 3)]

Iteração Paralela com a Função zip() em Python

Frequentemente na programação, é necessário percorrer duas ou mais listas em paralelo. A função zip() fornece uma maneira simples e eficiente de fazer isso, reduzindo drasticamente a necessidade de indexação e, como resultado, a possibilidade de erros.

Considere duas listas: uma contendo nomes de alunos e outra armazenando suas respectivas notas. Se você quiser imprimir o nome de cada aluno junto com sua nota, você pode usar a função zip().

alunos = ["Alice", "Bob", "Charlie"]
notas = [85, 90, 95]
 
for aluno, nota in zip(alunos, notas):
    print(f"{aluno}: {nota}")

Criando Dicionários com a Função zip() em Python

A função zip() em Python brilha em sua capacidade de criar dicionários dinamicamente. Dicionários em Python são estruturas de dados que armazenam dados como pares chave-valor. Se você tiver duas listas - uma com as chaves e outra com os valores correspondentes - você pode combiná-las em um dicionário usando a função zip().

chaves = ['maçã', 'banana', 'cereja']
valores = [1, 2, 3]
dicionario_frutas = dict(zip(chaves, valores))
print(dicionario_frutas)

Isso irá imprimir:

{'maçã': 1, 'banana': 2, 'cereja': 3}

Essa funcionalidade abre muitas oportunidades para criar e manipular estruturas de dados rapidamente, sendo particularmente benéfica em análise de dados e outras aplicações do mundo real.

Função zip() em Python com Iteráveis Não Ordenados

Enquanto as listas são coleções ordenadas, algumas coleções do Python como conjuntos e dicionários são não ordenados, o que significa que seus elementos não têm uma ordem específica. O que acontece se usarmos a função zip() com tais iteráveis?

Quando usada com coleções não ordenadas, a função zip() ainda produzirá tuplas, mas a ordem dessas tuplas dependerá de como o Python ordena internamente os elementos das coleções.

conjunto1 = {"maçã", "banana", "cereja"}
conjunto2 = {1, 2, 3}
conjunto_combinado = zip(conjunto1, conjunto2)
print(list(conjunto_combinado))

Lembre-se de que a saída pode ser diferente em diferentes execuções, pois os conjuntos são não ordenados.


Na seção anterior, exploramos alguns usos comuns da função zip() em Python. Nesta continuação, mergulharemos ainda mais nessa função versátil, ilustrando suas aplicações em diferentes cenários e comparando-a com outras funções do Python.

Resolvendo Problemas do Mundo Real com a Função zip() em Python

A função zip() em Python pode ser uma excelente ferramenta para resolver vários problemas de programação. Seja lidar com big data ou simplesmente criar dicionários rapidamente, a função zip() frequentemente fornece uma solução elegante.

Considere um cenário em que você está lidando com duas listas - uma contendo nomes de produtos e outra, seus respectivos preços. Se você quiser encontrar o produto com o preço máximo, você pode fazer isso facilmente com a função zip().

produtos = ["Maçãs", "Bananas", "Cerejas"]
preços = [1.5, 0.5, 3.2]
 
# Combine as duas listas e use a função max()
produto_preço_máximo = max(zip(preços, produtos))
print(produto_preço_máximo)

A saída será a tupla com o preço máximo, mostrando o produto com o custo mais alto.

Função zip() em Python vs Função enumerate()

Tanto a função zip() quanto a função enumerate() são funções internas do Python que lidam com iteráveis. A função zip(), como vimos, é usada para iterar sobre vários iteráveis simultaneamente, enquanto a função enumerate() adiciona um contador a um iterável e retorna um objeto enumerate.

Embora essas funções possam parecer semelhantes, elas têm propósitos distintos. A função zip() é ideal para cenários em que você precisa percorrer várias listas em paralelo ou criar dicionários dinamicamente. Por outro lado, a função enumerate() brilha quando você precisa ter um contador automático juntamente com elementos da lista, em cenários como imprimir o índice dos elementos ou percorrer uma lista com o índice do elemento.

Função zip() em Python para Criar Dicionários

Como vimos anteriormente, a função zip() do Python pode ser especialmente poderosa quando usada para criar dicionários. Isso se torna especialmente útil ao lidar com conjuntos de dados grandes, onde a criação manual de dicionários seria impraticável. A função zip() do Python nos permite construir dicionários de forma dinâmica, economizando tempo e esforço e tornando nosso código mais legível e eficiente.

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
person_dict = dict(zip(names, ages))
print(person_dict)

Isso resultará em:

{'Alice': 25, 'Bob': 30, 'Charlie': 35}

Conclusão

Isso conclui nossa análise detalhada da função zip() do Python. Seja percorrendo várias listas em paralelo, criando dicionários de forma dinâmica ou apenas tentando escrever um código mais limpo e eficiente, o zip() pode ser uma ferramenta inestimável no seu toolkit do Python.

FAQ

  1. O que é a função zip() do Python?

    A função zip() é uma função incorporada do Python que permite a iteração sobre várias listas ou outros objetos iteráveis em paralelo. Ela combina os elementos correspondentes de cada iterável e retorna um objeto zip consistindo de tuples.

  2. Como a função zip() do Python funciona com listas de comprimentos diferentes?

    Quando a função zip() é usada com listas de comprimentos diferentes, o comprimento do resultado é determinado pela lista mais curta. Os elementos extras da lista mais longa simplesmente são ignorados.

  3. A função zip() do Python pode ser usada com conjuntos e dicionários?

    Sim, a função zip() pode ser usada com qualquer tipo de iterável, incluindo conjuntos e dicionários. No entanto, tenha em mente que conjuntos e dicionários são coleções desordenadas, então a ordem dos elementos nas tuples resultantes pode não ser previsível.