Trozos desiguales en python

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