Имея список размеров фрагментов, как бы вы разделили итерируемый объект на фрагменты переменной длины? Я пытаюсь уговорить itertools.islice
пока безуспешно.
for chunk_size in chunk_list:
foo(iter, chunk_size)
Имея список размеров фрагментов, как бы вы разделили итерируемый объект на фрагменты переменной длины? Я пытаюсь уговорить itertools.islice
пока безуспешно.
for chunk_size in chunk_list:
foo(iter, chunk_size)
Вам нужно сделать объект iter
вашего итерируемого, чтобы вы могли вызвать islice
для него с определенным размером и выбрать, где вы остановились на следующей итерации. Это идеальное использование функции генератора:
def uneven_chunker(iterable, chunk_list):
group_maker = iter(iterable)
for chunk_size in chunk_list:
yield itertools.islice(group_maker, chunk_size)
Пример:
>>> iterable = 'the quick brown fox jumps over the lazy dog'
>>> chunk_size = [1, 2, 3, 4, 5, 6]
>>> for item in uneven_chunker(iterable, chunk_size):
... print ''.join(item)
...
t
he
qu
ick
brown
fox j