После всего вышесказанного, вот решение python3, которое, я считаю, дает более безопасные и более предсказуемые результаты.
def chunker(iter, size):
chunks = [];
if size < 1:
raise ValueError('Chunk size must be greater than 0.')
for i in range(0, len(iter), size):
chunks.append(iter[i:(i+size)])
return chunks
example = [1,2,3,4,5,6,7,8,9]
print(' 1: ' + str(chunker(example, 1)))
print(' 3: ' + str(chunker(example, 3)))
print(' 4: ' + str(chunker(example, 4)))
print(' 8: ' + str(chunker(example, 8)))
print(' 9: ' + str(chunker(example, 9)))
print('10: ' + str(chunker(example, 10)))
Результаты:
$ python3 iter_chunk.py
1: [[1], [2], [3], [4], [5], [6], [7], [8], [9]]
3: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
4: [[1, 2, 3, 4], [5, 6, 7, 8], [9]]
8: [[1, 2, 3, 4, 5, 6, 7, 8], [9]]
9: [[1, 2, 3, 4, 5, 6, 7, 8, 9]]
10: [[1, 2, 3, 4, 5, 6, 7, 8, 9]]