All work and no play makes Jack a dull boy

quarta-feira, 18 de fevereiro de 2015

iterar lista dois itens por vez com python


Como iterar um lista e retornar pares dos itens usando python?

O itertools do python é bem versátil:

from itertools import tee, izip
def pares(lista):
    a, b = tee(lista)
    next(b, None)
    return izip(a, b)
Considerando a lista:
lista = [1,2,3,4,5,6,7,8,9,10]

Aplique assim:
for v, w in pares(lista):
    print v, w
1 2
2 3
3 4
...
ou dessa forma:
for i in pares(lista):
    print i
(1, 2)
(2, 3)
(3, 4)
...
Repare que a função não retorna uma lista, mas um objeto de itertools.

Como funciona: primeiro, com o tee() criamos dois iteráveis paralelos, ambos apontando para o primeiro item da lista. Em seguida move-se o segundo, b, para o segundo item com next(). Dessa forma o a está no lista[0] e b está no lista[1].

fonte