Como usar a função ZIP no Python

Como usar a função ZIP no Python
Este artigo abordará um guia sobre a função "ZIP" disponível na biblioteca de módulos padrão do Python. Este método permite que você combine e pare os elementos de múltiplos objetos iteráveis. Você pode executar mais lógica nesses pares. Em muitos casos, o uso de uma função "ZIP" é muito mais eficiente e limpo do que usar loops múltiplos e aninhados para ".

Sobre função zip

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

LIST1 = ["A", "B", "C"]
List2 = ["Apple", "Ball", "Cat"]
zipped = zip (List1, List2)
Imprimir (Lista (com zíper))

As duas primeiras declarações na amostra de código acima definem duas listas contendo alguns elementos. Em seguida, a função "ZIP" é usada pela passagem "List1" e "List2" Variáveis ​​como argumentos. Esta é a principal sintaxe da função "zip". Você só precisa passar listas ou outros iteáveis ​​ordenados válidos como argumentos cujos elementos você deseja combinar. Por fim, a declaração de impressão é usada para obter a saída da variável "zíper". Depois de executar a amostra de código mencionada acima, você deve obter a seguinte saída:

[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]

Observe que a função "ZIP" retorna um objeto do tipo "zip" e não uma lista. Você precisa convertê -lo em um tipo iterável, conforme mostrado na declaraçã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. Portanto, o 0º elemento de "List1" é combinado com o 0º elemento de "List2", o 1º elemento de "List1" é combinado com o 1º elemento de "List2" e assim por diante. A função ZIP se move da esquerda para a direita e a tupla que contém 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 declarado acima, ambas as listas têm o número igual de elementos. Caso você esteja lidando com algum código em que ambas as listas não têm o mesmo número de elementos, a função "ZIP" será interrompida no último elemento da lista com o menor número de elementos.

No exemplo abaixo, a função "zip" parará no elemento "C", independentemente da "Lista2" ter mais um elemento.

LIST1 = ["A", "B", "C"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
zipped = zip (List1, List2)
Imprimir (Lista (com zíper))

Depois de executar a amostra de código mencionada acima, você deve obter a seguinte saída:

[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]

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

Geralmente, 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.

LIST1 = ["A", "B", "C"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
List3 = ["5", "3"]
zipped = zip (List1, List2, List3)
Imprimir (Lista (com zíper))

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

[('A', 'Apple', '5'), ('B', 'Ball', '3')]]

Criando listas individuais de um objeto do tipo zip

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

LIST1 = ["A", "B", "C"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
List3 = ["5", "3"]
zipped = zip (List1, List2, List3)
L1, L2, L3 = ZIP (*ZIPED)
Print (List (L1), Lista (L2), Lista (L3))

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

['A', 'B'] ['Apple', 'Ball'] ['5', '3']

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

Usando ZIP quando você deseja manter os elementos de mais iteração mais longa

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

Nesse caso, você terá que usar o método "zip_longest ()" do módulo "itterols" de Python. Funciona da mesma forma que a função "ZIP", com uma pequena diferença que ele para no último elemento do tipo mais longo.

De ITERTOOLS IMPORT ZIP_LONGEST
LIST1 = ["A", "B", "C"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
List3 = ["5", "3"]
zipped = zip_longest (List1, List2, List3)
Imprimir (Lista (com zíper))

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

[('A', 'Apple', '5'), ('B', 'Ball', '3'), ('C', 'Cat', Nenhum), (Nenhum, 'Doll', 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 extra "FillValue" para o método "zip_longest".

De ITERTOOLS IMPORT ZIP_LONGEST
LIST1 = ["A", "B", "C"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
List3 = ["5", "3"]
zipped = zip_longest (List1, List2, List3, FillValue = "My_value")
Imprimir (Lista (com zíper))

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

[(('a', 'maçã', '5'), ('b', 'ball', '3'), ('c', 'gat', 'my_value'), ('my_value', 'boneca ',' my_value ')]

Conclusão

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