我有一个元组列表,我需要为每个元组添加更多信息。该列表看起来像这样:
[(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), ...]
答案 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]