Pitão

Como usar a função Zip em Python

Como usar a função Zip em Python
Este artigo cobrirá um guia sobre a função “zip” disponível na biblioteca de módulos padrão do Python. Este método permite combinar e emparelhar elementos de vários objetos iteráveis. Você pode então executar mais lógica nesses pares. Em muitos casos, usar uma função “zip” é muito mais eficiente e mais limpo do que usar vários loops “for” aninhados.

Sobre a função Zip

Como afirmado anteriormente, a função "zip" é usada para criar pares de elementos de vários objetos iteráveis. Considere o exemplo abaixo para entender a sintaxe básica e o uso da função zip:

lista1 = ["a", "b", "c"]
lista2 = ["maçã", "bola", "gato"]
compactado = zip (lista1, lista2)
imprimir (lista (zipada))

As primeiras duas instruções no exemplo de código acima definem duas listas contendo alguns elementos. Em seguida, a função “zip” é usada passando as variáveis ​​“lista1” e “lista2” como argumentos. Esta é a sintaxe principal da função “zip”. Você só precisa passar listas ou outros iteráveis ​​ordenados válidos como argumentos cujos elementos você deseja combinar. Por último, a instrução de impressão é usada para obter a saída da variável “compactada”. Depois de executar o exemplo de código mencionado acima, você deve obter a seguinte saída:

[('a', 'maçã'), ('b', 'bola'), ('c', 'gato')]

Observe que a função “zip” retorna um objeto do tipo “zip” e não uma lista. Você deve convertê-lo para um tipo iterável, como mostrado na instrução de impressão acima.

Em termos simples, a função “zip” pega elementos do mesmo índice de duas listas e os combina como um par em uma tupla. Assim, o 0º elemento da “lista1” é combinado com o 0º elemento da “lista2”, o 1º elemento da “lista1” é combinado com o 1º elemento da “lista2” e assim por diante. A função Zip move-se da esquerda para a direita e a tupla contendo elementos emparelhados tem o mesmo índice que os elementos armazenados neles.

Usando Zip quando os iteráveis ​​não têm o mesmo número de elementos

No exemplo mencionado acima, ambas as listas têm o mesmo número de elementos. Caso você esteja lidando com algum código onde ambas as listas não possuem o mesmo número de elementos, a função “zip” irá parar no último elemento da lista com o menor número de elementos.

No exemplo abaixo, a função “zip” irá parar no elemento “c”, independentemente de “list2” ter mais um elemento.

lista1 = ["a", "b", "c"]
list2 = ["maçã", "bola", "gato", "boneca"]
compactado = zip (lista1, lista2)
imprimir (lista (zipada))

Depois de executar o exemplo de código mencionado acima, você deve obter a seguinte saída:

[('a', 'maçã'), ('b', 'bola'), ('c', 'gato')]

Você pode usar mais de dois iteráveis ​​ao usar a função Zip

Normalmente, a função “zip” é usada para comparar dois objetos iteráveis. No entanto, você pode passar qualquer número de iteráveis ​​como argumentos para a função “zip”. O princípio de parar no último elemento da lista mais curta ainda será aplicável.

lista1 = ["a", "b", "c"]
list2 = ["maçã", "bola", "gato", "boneca"]
list3 = ["5", "3"]
compactado = zip (lista1, lista2, lista3)
imprimir (lista (zipada))

Depois de executar o exemplo de código mencionado acima, você deve obter a seguinte saída como resultado:

[('a', 'maçã', '5'), ('b', 'bola', '3')]

Criação de listas individuais a partir de um objeto do tipo Zip

Se você já tem um objeto "zip", pode usá-lo para preencher novamente listas individuais que foram usadas anteriormente quando a função zip foi chamada pela primeira vez nelas.

lista1 = ["a", "b", "c"]
list2 = ["maçã", "bola", "gato", "boneca"]
list3 = ["5", "3"]
compactado = zip (lista1, lista2, lista3)
l1, l2, l3 = zip (* zipado)
imprimir (lista (l1), lista (l2), lista (l3))

Depois de executar o exemplo de código mencionado acima, você deve obter a seguinte saída como resultado:

['a', 'b'] ['maçã', 'bola'] ['5', '3']

No exemplo de código acima, o objeto “zip” é esvaziado usando o operador “*”. Os resultados deflacionados são então alimentados em outra chamada para a função zip que cria listas originais. Observe que você não pode obter todos os elementos de volta nas listas originais se listas de comprimento desigual foram usadas quando o objeto "zip" foi criado pela primeira vez.

Usando o Zip quando você quiser manter os elementos da iteração mais longa

Em vários exemplos acima, você pode ter observado que a função "zip" por padrão para no último elemento do iterável mais curto. E se você quiser que ele continue iterando até atingir o último elemento do iterável mais longo?

Nesse caso, você terá que usar o método “zip_longest ()” do módulo “itertools” do Python. Funciona da mesma forma que a função “zip”, com uma pequena diferença que para no último elemento do tipo iterável mais longo.

from itertools import zip_longest
lista1 = ["a", "b", "c"]
list2 = ["maçã", "bola", "gato", "boneca"]
list3 = ["5", "3"]
compactado = zip_longest (lista1, lista2, lista3)
imprimir (lista (zipada))

Depois de executar o exemplo de código mencionado acima, você deve obter a seguinte saída como resultado:

[('a', 'maçã', '5'), ('b', 'bola', '3'), ('c', 'gato', Nenhum), (Nenhum, 'boneca', Nenhum) ]

Os valores ausentes são preenchidos como objetos do tipo “Nenhum”. Você também pode fornecer seu próprio valor para preencher passando um argumento "fillvalue" extra para o método "zip_longest".

from itertools import zip_longest
lista1 = ["a", "b", "c"]
list2 = ["maçã", "bola", "gato", "boneca"]
list3 = ["5", "3"]
compactado = zip_longest (lista1, lista2, lista3, fillvalue = "my_value")
imprimir (lista (zipada))

Depois de executar o exemplo de código mencionado acima, você deve obter a seguinte saída como resultado:

[('a', 'maçã', '5'), ('b', 'bola', '3'), ('c', 'gato', 'meu_valor'), ('meu_valor', 'boneca ',' meu_valor ')]

Conclusão

A função Zip pode ser emulada usando alguns loops e declarações de condições. No entanto, ajuda a manter o código organizado e mais limpo, removendo verbosidade desnecessária e instruções repetitivas.

Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...
Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...
Instale o emulador Dolphin mais recente para Gamecube e Wii no Linux
O Dolphin Emulator permite que você jogue seus jogos de Gamecube e Wii escolhidos em computadores pessoais Linux (PC). Sendo um emulador de jogo disp...