ne dite di questo:
>>> x = '0,1,2,3,4,5,6,7,8,9'.split(',')
>>> def chunker(seq, size):
... return (tuple(seq[pos:pos + size]) for pos in xrange(0, len(seq), size))
...
>>> list(chunker(x, 2))
[('0', '1'), ('2', '3'), ('4', '5'), ('6', '7'), ('8', '9')]
Questo sarà anche ben gestire quantità irregolari:
>>> x = '0,1,2,3,4,5,6,7,8,9,10'.split(',')
>>> list(chunker(x, 2))
[('0', '1'), ('2', '3'), ('4', '5'), ('6', '7'), ('8', '9'), ('10',)]
P.S. Avevo questo codice messo da parte e ho appena realizzato dove l'ho preso da. Ci sono due domande molto simili a StackOverflow su questo:
C'è anche questo gioiello dalla sezione Recipes di itertools
:
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
possibile duplicato di [Come si divide una lista in blocchi di dimensioni uguali in Python?] (Http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly- dimensioni-pezzi-in-python) – tzot