Dada una lista de tamaños de trozos, ¿cómo dividiría un iterable en trozos de longitud variable? Estoy tratando de persuadir itertools.islice
sin éxito todavía.
for chunk_size in chunk_list: foo(iter, chunk_size)
Necesita hacer un objeto islice
de su iterable para poder llamar a islice
con un tamaño particular y continuar donde lo dejó en la siguiente iteración. Este es un uso perfecto para una función de generador:
def uneven_chunker(iterable, chunk_list): group_maker = iter(iterable) for chunk_size in chunk_list: yield itertools.islice(group_maker, chunk_size)
Ejemplo:
>>> 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