【发布时间】:2018-02-21 19:18:51
【问题描述】:
我有一个函数列表。每个函数可以返回一个浮点数或 2 个浮点数的列表。我需要使用列表理解构建一个平面结果列表。 出于效率原因,我需要使用一次迭代来构建结果。出于同样的原因,for 循环不是一个选项(这是我的信念……这是正确的吗?)。
输入:
funcs=[[function_1, arguments_function_1],[function_2,arguments_function_2]...[function_n, arguments_function_n]
其中 function_j 是先前定义的函数。 arguments_function_j 是 funtion_j 的参数列表。
暂定调用:
results=[f[0](f[1]) for f in funcs]
上面的调用在语法上是正确的,但没有以我需要的格式返回结果。事实上,假设第四个函数返回一个列表,最终结果将是
[1,2,3,[4,5],6] instead of [1,2,3,4,5,6] as I need
我尝试了以下方法:
results=[f[0](f[1]) if type(f[0](f[1]))==float\
else f[0](f[1])[0],f[0](f[1])[1]\
for f in funcs]
但f[0](f[1])[0],f[0](f[1])[1] 部分在语法上不正确。它应该放在括号之间,但它不会解决问题。
有什么提示吗? 提前致谢
【问题讨论】:
-
请检查原始问题是否回答了您的问题。
-
嗨,是的,我读过那篇文章,但它不能解决我的问题。那里建议的解决方案假定所有元素都是像 l=[[1],[2],[3,4],[5]] 这样的列表。我的情况不同。在我的情况下,输入是 l=[1,2,[3,4],5] 并且建议的解决方案会出现错误。
标签: python python-2.7 list processing-efficiency