如何生成预先解压缩的列表?

Kit*_*Kit 1 python yield group-by python-itertools iterable-unpacking

我有一个在itertools.groupby操作中创建的列表:

def yield_unpacked_list():
    for key, grp in itertools.groupby(something_to_groupby, key=lambda x: x[0]):
        subset_of_grp = list(item[2] for item in list(grp))
        yield key, subset_of_grp
Run Code Online (Sandbox Code Playgroud)

例如,如果subset_of_grp结果是[1, 2, 3, 4][5, 6, 7, 8]:

for m in yield_unpacked_list():
    print m
Run Code Online (Sandbox Code Playgroud)

打印出来:

('first_key', [1, 2, 3, 4])
('second_key', [5, 6, 7, 8])
Run Code Online (Sandbox Code Playgroud)

现在,回到我的函数定义.显然以下是语法错误(*运算符):

def yield_unpacked_list():
    for key, grp in itertools.groupby(something_to_groupby, key=lambda x: x[0]):
        subset_of_grp = list(item[2] for item in list(grp))
        yield key, *subset_of_grp
Run Code Online (Sandbox Code Playgroud)

我希望同一 print循环的以下结果不带[list]括号:

('first_key', 1, 2, 3, 4)
('second_key', 5, 6, 7, 8)
Run Code Online (Sandbox Code Playgroud)

请注意,print这里仅用于说明目的.我还有其他功能可以从简化的tuple结构中受益.

Jac*_*lly 5

yield (key,) + tuple(subset_of_grp)