Python使用返回多个值的函数创建元组

时间:2014-09-30 22:25:11

标签: python python-2.7

我有一个元组列表,我需要为每个元组添加更多信息。该列表看起来像这样:

[(name1, value1), (name2, value2), (name1, value3), ...]

我有一个函数来获取每个元组的额外信息,但我需要新的元组是平的,我想不出一个在列表理解中这样做的好方法。我希望能够做到这样的事情:

new_list = [(name, value, *extra_info(name)) for name, value in old_list]

new_list = [list(name, value, *extra_info(name)) for name, value in old_list]

不幸的是,第一个是错误的语法,第二个不起作用,因为list只接受一个参数。有没有办法解析列表理解中extra_info返回的元组?如果做不到这一点,解决这个问题的最恐怖的方法是什么?

要说清楚,我希望最终得到一个如下所示的列表:

[(name1, value1, extra1, extra2), (name2, value2, extra3, extra4), (name1, value3, extra1, extra2), ...]

3 个答案:

答案 0 :(得分:2)

您必须对列表求和并将其转换为元组。

new_list = [(name, value) + extra_info(name) for name, value in old_list]

答案 1 :(得分:2)

尝试:

  new_list = [(name, value) + extra_info(name) for name, value in old_list]

无需将元组转换为列表......

答案 2 :(得分:0)

在考虑这个问题时我提出的一点是使用lambda echo函数来打包新元组:

packer = lambda *x: x
new_list = [packer(name, value, *extra_info(name)) for name, value in old_list]