Python使用不同的参数多次调用函数

时间:2016-12-08 22:55:01

标签: python

我有一个带两个参数的函数。我希望为输入的每个可能组合运行该函数,并存储每个返回的值。例如:

def foo(a, b):
    return (a + b)

if __name__ == "__main__":
    a = np.array([1., 2., 3.])
    b = np.array([5., 6.])
    f1 = foo(a[0], b[0]) #6
    f2 = foo(a[0], b[1]) #7
    f3 = foo(a[1], b[0]) #etc
    f4 = foo(a[1], b[1])
    f5 = foo(a[2], b[0])
    f6 = foo(a[2], b[1])

如何以更优雅的方式调用f1到f6,比如循环?它不能是直接循环,因为a和b具有不同数量的元素。

1 个答案:

答案 0 :(得分:3)

itertools.product是以Pythonic方式进行的方式。但是,如果您正在寻找更原始,更基本的方法,那么您需要两个for循环,这是交叉产品的基本属性。

for i in a:
    for j in b:
        foo(i, j)

修改

itertools.product的示例用法:

for i, j in itertools.product(a, b):
    foo(i, j)
for tup in itertools.product(a, b):
    foo(*tup)

我更喜欢第一个,因为如果需要,可以显式使用元组元素。