Coletânea Python do ZERO às Redes Neurais Artificiais
Zip longest
Se você entendeu a lógica do método zip( ), deve ter reparado que tal método trabalha limitado a união de listas com equivalência de elementos, ou seja, necessariamente precisávamos de listas com o mesmo número de elementos para que os mesmos pudessem ser convertidos.
Porém, trazendo tal conceito para algo mais próximo da realidade,
muitas das vezes nos deparamos justamente com o contrário, com situações onde as listas que precisamos parear terão número e elementos diferentes.
Nesses casos em particular, podemos fazer o uso do método zip_longest( ) da biblioteca itertools.
Como zip_longest( ) em questão não é uma função nativa do Python,
inicialmente precisamos realizar a importação da mesma para nosso código. Isso é feito pelo comando from itertools import zip_longest, uma vez que precisamos apenas dessa função e não de toda a biblioteca itertools.
Na sequência criamos uma variável de nome cidades que recebe uma
lista com alguns nomes de cidade em forma de string. Da mesma forma criamos uma variável de nome estados que recebe por sua vez uma lista com algumas siglas para estados brasileiros.
Note que aqui não existe uma equiparação de elementos, haja visto que a
lista de cidades possui mais elementos que a lista de estados.
Para esses casos, onde queremos realizar a união de listas de diferentes
tamanhos, a função adequada é a zip_longest( ).
Sendo assim, inicialmente criamos uma variável de nome cidades_estados que recebe como atributo a função zip_longest( ) parametrizada com os dados de cidades e de estados.
Visualizando tais dados é possível perceber que a união das listas foi
feita, sem gerar exceções, porém, onde havia discrepância de elementos, o “espaço vazio” foi preenchido automaticamente com None.
None por sua vez é uma palavra reservada ao sistema para sinalizar que justamente naquela posição do código não existe nenhum dado/valor.
Por meio da função zip_longest( ) podemos contornar isso facilmente
através do parâmetro fillvalue, atribuindo para o mesmo algum dado ou valor a ser inserido onde for um espaço vazio.
Realizando este pequeno tratamento, replicamos o mesmo código, porém
agora atribuído para cidades_estados2, fazendo o uso de fillvalue = ‘Desconhecido’.
O retorno, como esperado, é um objeto zip com suas respectivas tuplas
de elementos, onde os elementos anteriormente faltantes agora possuem a string ‘Desconhecido’ em sua composição.