如何使用随机参数调用一组函数。
import random
def sum_3 (a):
return (sum(a) + 3)
def sum_2 (b):
return (sum(b) + 2)
# Call the functions
functions = [sum_3, sum_2]
# Using random arguments
random.sample(range(1, 100000), 5)
答案 0 :(得分:0)
假设functions
是函数列表:
import random
# Call your function like this:
random.choice(functions)(a)
如果您更喜欢使用np.random.choice
,请使用numpy
(之所以这样做,是因为它更多是默认的数学库)
答案 1 :(得分:0)
您可以遍历函数并通过示例进行调用。
>>> the_sample = random.sample(range(1, 100000), 5)
>>> the_sample
>>> [6163, 38513, 35085, 4876, 27506]
>>>
>>> for func in functions:
...: print(func(the_sample))
...:
112146
112145
建立结果列表:
>>> [func(the_sample) for func in functions]
>>> [112146, 112145]
答案 2 :(得分:0)
取决于您要调用它的次数。一种方法如下:
import random
def sum_3 (a):
print('calling sum3 with', a)
return (sum(a) + 3)
def sum_2 (b):
print('calling sum2 with', b)
return (sum(b) + 2)
functions = [sum_3, sum_2]
for i in range(3): # call each function 3 times
for func in functions:
print(func(random.sample(range(1, 100000), random.randint(2, 6))))
calling sum3 with [76385, 37776, 19464]
133628
calling sum2 with [21520, 97936, 44610]
164068
calling sum3 with [1184, 4786]
5973
calling sum2 with [2680, 36487, 24265, 39569, 18331]
121334
calling sum3 with [87777, 81241, 95238, 58267, 3434, 85015]
410975
calling sum2 with [5020, 68999, 50868, 17544]
142433
答案 3 :(得分:0)
我将定义一个通用函数,该函数允许我选择并预定义要使用的函数,然后将选定的函数与参数一起应用。您可以考虑采用以下两种方法:
将所需的功能编译为一个对象。
将已编译对象中的函数应用于参数。
因此,与其像在问题中那样将函数放在列表中,不如将它们编译在具有另一个函数的对象中。它适用于多个功能以及单个功能,因此非常通用。
import random
def sum_3 (a):
return (sum(a) + 3)
def sum_2 (b):
return (sum(b) + 2)
parameters = random.sample(range(1, 100000),5)
# generic function to apply functions on parameters
def compile(*fs): return lambda x: map(lambda f: f(x), fs)
# choose the functions you want to apply
dosum3and2 = compile(sum_3,sum_2)
dosum2only = compile(sum_2)
# apply the defined functions to parameters
print(list(dosum3and2(parameters)))
print(list(dosum2only(parameters)))
# output =>
# [294334, 294333]
# [294333]
当您有许多功能sum_1
,sum_2
,sum_3
,...,sum_n
时,请先编译它们,然后将其应用于诸如以下的参数
# compile the chosen functions
# which looks very similar as what you did with list (functions = [sum_3, sum_2]).
functions = compile(sum_1,sum_2,sum_3,...,sum_n)
# apply to parameters
functions(parameters)