Если данные понадобятся позже, они должны быть сохранены в виде списка:

ал вокруг, чтобы лучше понять itertoolsgroupby, поэтому я сгруппировал список кортежей по номеру и попытался получить список результирующих групп. Когда я конвертирую результатgroupby однако к списку я получаю странный результат: все, кроме последней группы, пусты. Почему это? Я предполагал, что превращение итератора в список будет менее эффективным, но никогда не изменит поведение. Я думаю, что списки пусты, потому что внутренние итераторы пройдены, но когда / где это происходит?

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')]]

Ответы на вопрос(1)

Ваш ответ на вопрос