I have a list of functions. Each function may return either a float or a list of 2 floats. I need to build a flat list of results using a list comprhension. For efficiency reasons, I need to build the results using one single iteration. For the same reason, the for loop is not an option (this is my belief... Is this correct?).
Input:
funcs=[[function_1, arguments_function_1],[function_2,arguments_function_2]...[function_n, arguments_function_n]
where function_j is a previously defined function. arguments_function_j is the list of arguments for funtion_j.
Tentative call:
results=[f[0](f[1]) for f in funcs]
The above call is syntactically correct but does not return the results in the format I need. In facts, assuming that the forth function returns a list, the final result would be
[1,2,3,[4,5],6] instead of [1,2,3,4,5,6] as I need
I tried the following:
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]
But the f[0](f[1])[0],f[0](f[1])[1]
part is not syntactically correct. It should be placed between bracktes but then it would not solve the problem.
Any hint? Thanks in advance