输入为列表时如何获取函数的输出

时间:2019-01-31 21:30:01

标签: python arrays function evaluation

想象一下我有一个如下功能:

f = (s**2 + 2*s + 5) + 1  

其中s是:

s = [1 , 2 , 3]

如何将s传递给函数?

我知道我可以定义如下函数:

def model(s):
    model = 1 + (s**2 + 2*s + 5)
    return model
fitted_2_dis = [model(value) for value in s]

print ("fitted_2_dis =", fitted_2_dis)

获取:

fitted_2_dis = [9, 14, 21]

我不想使用这种方法。因为我的实际功能是如此之大,带有很多表达式。因此,我没有像下面那样定义所有表达式,而是定义了如下函数:

sum_f = sum (f)

Sum_f in my code is the summation of bunches of expressions.

当输入是数组时,还有其他方法可以评估我的函数(sum_f)吗? 谢谢

3 个答案:

答案 0 :(得分:2)

列表理解方法是一个很好的方法。另外,您还可以使用map

fitted_2_dis = list(map(model, s))

如果您是numpy的粉丝,则可以使用np.vectorize

np.vectorize(model)(s)

最后,如果将数组转换为numpy的{​​{1}},则可以直接将其传递:

ndarray

答案 1 :(得分:1)

Map函数将很好地完成任务:

>>> map(model, s)
[9, 14, 21]

答案 2 :(得分:1)

您可以尝试以下方法:

import numpy as np


def sum_array(f):
    np_s = np.array(f)
    return (np_s**2 + 2*np_s + 5) + 1

s = [1, 2, 3]
sum_f = sum_array(s)