1

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

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

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

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

4

2 回答 2

5

yield (key,) + tuple(subset_of_grp)

于 2010-08-29T04:09:03.480 回答
2
def yield_unpacked_list():
    for key, grp in itertools.groupby(something_to_groupby, key=lambda x: x[0]):
        yield (key,) + tuple(item[2] for item in grp)

从您想要打印的结果来看,很明显您想要产生一个tuple- 不知道为什么您将其称为“未打包列表”,但是无论如何,您就在那里。我还删除了几个调用,这些调用list在您的代码中根本没有任何用处。

于 2010-08-29T04:11:10.620 回答