listar alrededor de grupo por resultados en grupos vacíos

Estaba jugando para tener una mejor idea de las herramientas de itertogroupby, así que agrupé una lista de tuplas por el número e intenté obtener una lista de los grupos resultantes. Cuando convierto el resultado degroupby en una lista, sin embargo, obtengo un resultado extraño: todos menos el último grupo están vacíos. ¿Porqué es eso? Supuse que convertir un iterador en una lista sería menos eficiente pero nunca cambiaría el comportamiento. Supongo que las listas están vacías porque los iteradores internos están atravesados, pero ¿cuándo / dónde sucede eso?

import itertools

l=list(zip([1,2,2,3,3,3],['a','b','c','d','e','f']))
#[(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e'), (3, 'f')]

grouped_l = list(itertools.groupby(l, key=lambda x:x[0]))
#[(1, <itertools._grouper at ...>), (2, <itertools._grouper at ...>), (3, <itertools._grouper at ...>)]

[list(x[1]) for x in grouped_l]
[[], [], [(3, 'f')]]


grouped_i = itertools.groupby(l, key=lambda x:x[0])
#<itertools.groupby at ...>
[list(x[1]) for x in grouped_i]
[[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e'), (3, 'f')]]

Respuestas a la pregunta(3)

Su respuesta a la pregunta