Skip to main content
 首页 » 编程设计

python之如何生成预解压列表

2025年05月04日15kerrycode

我有一个在 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 

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

for m in yield_unpacked_list(): 
    print m 

会打印出:

('first_key', [1, 2, 3, 4]) 
('second_key', [5, 6, 7, 8]) 

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

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 

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

('first_key', 1, 2, 3, 4) 
('second_key', 5, 6, 7, 8) 

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

请您参考如下方法:

yield (key,) + tuple(subset_of_grp)