Listar array por parejas
Arnau Sanchez
pyarnau en gmail.com
Mar Jun 17 19:37:36 CEST 2008
Antoni Aloy escribió:
>>> Como obtengo en cada iteración de un array dos elementos en vez de uno,
>>> sabiendo que la lista tiene un número de elementos par?
>
> A ver si esto te sirve
> x = [1,2,3,4]
> [(x[i],x[i+1]) for i in range(0, len(x)) if i % 2 == 0]
Con la misma idea:
[(x[2*i],x[2*i+1]) for i in xrange(len(x)/2)]
Hay que apuntar que si la intención es iterar sobre el resultado, en vez de una
lista es preferible crear un generador:
[...] -> (...)
Propongo todavía otra forma usando las itertools:
http://docs.python.org/lib/itertools-recipes.html
from itertools import izip, chain, repeat
def grouper(n, iterable, padvalue=None):
return izip(*[chain(iterable, repeat(padvalue, n-1))]*n)
list(grouper(2, x))
# [(1, 2), (3, 4)]
Si no necesitamos padding (la longitud del iterable es siempre múltiplo de n),
podemos simplificar:
def grouper(n, iterable):
return izip(*[iter(iterable))]*n)
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es