Pequena dica de Python: mesclando listas

Essa é bem legal. Temos três listas:

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> c=['a','b','c']

Veja:

>>> zip(a,b,c)
[(1, 4, 'a'), (2, 5, 'b'), (3, 6, 'c')]

Simples e útil, não? E se as listas tiverem tamanhos diferentes?

>>> c=['a','b']
>>> zip(a,b,c)
[(1, 4, 'a'), (2, 5, 'b')]

O resultado será truncado para o tamanho da menor lista. Se você quiser, pode obter um comportamento diferente com map, assim:

>>> map(None,a,b,c)
[(1, 4, 'a'), (2, 5, 'b'), (3, 6, None)]

Veja um truque que eu costumava usar bastante com zip:

>>> colors=['Azul','Vermelho','Amarelo','Verde','Branco']
>>> for i in zip(range(len(colors)),colors):
...   print '%i. %s' % i
... 
0. Azul
1. Vermelho
2. Amarelo
3. Verde
4. Branco

Até que eu descobri enumerate():

>>> for i in enumerate(colors):
...   print '%i. %s' % i
... 
0. Azul
1. Vermelho
2. Amarelo
3. Verde
4. Branco

One comment on “Pequena dica de Python: mesclando listas

  1. Muito legal!! zip e map são mesmo fantásticas. 
    Existe também um outro macete para agrupar uma lista em grupos de N elementos. É um oneliner impressionante! =)

    map(None, *[iter([1,2,3,4,5,6,7,8])] * 3)Isso retorna uma lista de tuplas: [(1, 2, 3), (4, 5, 6), (7, 8, None)]

    Aprendi esse macete faz um tempo. Parabéns pelo blog!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *