Como compactar duas listas em python


Muitas vezes você pode estar interessado em compactar (ou “mesclar”) duas listas em Python. Felizmente, isso é fácil de fazer usando a função zip().

Este tutorial mostra vários exemplos de uso prático desta função.

Exemplo 1: compactar duas listas de igual comprimento em uma única lista

A sintaxe a seguir mostra como compactar duas listas de igual comprimento em uma:

 #define list a and list b
a = ['a', 'b', 'c']
b = [1, 2, 3]

#zip the two lists together into one list
list( zip (a,b))

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

Exemplo 2: compactar duas listas de igual comprimento em um dicionário

A sintaxe a seguir mostra como compactar duas listas de igual comprimento em um dicionário:

 #define list of keys and list of values
keys = ['a', 'b', 'c']
values = [1, 2, 3]

#zip the two lists together into one dictionary
dict( zip (keys, values)) 

{'a': 1, 'b': 2, 'c': 3}

Exemplo 3: compactar duas listas de comprimentos desiguais

Se suas duas listas tiverem comprimentos desiguais, zip() será truncado para o comprimento da lista mais curta:

 #define list a and list b
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3]

#zip the two lists together into one list
list( zip (a,b))

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

Se você quiser evitar que zip() seja truncado para o comprimento da lista mais curta, você pode usar a função zip_longest() da biblioteca itertools .

Por padrão, esta função preenche “Nenhum” para valores ausentes:

 from itertools import zip_longest

#define list a and list b
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3]

#zip the two lists together without truncating to length of shortest list
list( zip_longest (a, b))

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

No entanto, você pode usar o argumento fillvalue para especificar um valor de preenchimento diferente a ser usado:

 #define list a and list b
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3]

#zip the two lists together, using fill value of '0'
list( zip_longest (a, b, fillvalue= 0 ))

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

Você pode encontrar a documentação completa da função zip_longest() aqui .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *