Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何生成预解包列表?_Python_Group By_Yield_Itertools_Iterable Unpacking - Fatal编程技术网

Python 如何生成预解包列表?

Python 如何生成预解包列表?,python,group-by,yield,itertools,iterable-unpacking,Python,Group By,Yield,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 例如,如果_grp的子集合结果是

我有一个在
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
例如,如果_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])
现在,回到我的函数定义。显然,以下是一个语法错误(
*
运算符):

我希望相同的
打印
循环的以下结果不包含
[list]
括号:

('first_key', 1, 2, 3, 4)
('second_key', 5, 6, 7, 8)
请注意,
打印
仅用于说明目的。我还有其他功能可以从简化的
tuple
结构中受益。

yield(key,)+tuple(subset\u of\u grp)
yield(key,)+tuple(subset\u of\u of\u grp)

从您想要打印的结果来看,很明显,您想要生成一个
元组
——不知道为什么将其称为“未打包列表”,但是,无论如何,您已经找到了。我还删除了对
list
的几个调用,这些调用在代码中根本不起任何作用

从您想要打印的结果来看,很明显,您想要生成一个
元组
——不知道为什么将其称为“未打包列表”,但是,无论如何,您已经找到了。我还删除了对
list
的几个调用,这些调用在代码中根本不起任何作用

('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]):
        yield (key,) + tuple(item[2] for item in grp)