任意多维函数值的总和?

时间:2013-06-22 16:49:54

标签: python function sum

假设我们有一个变量集$V={v_1,v_2,...,v_n}$,并假设每个变量从集合W_i中获取的值很少。所以$v_i \in W_i$。现在有一个函数$f(v_1,...,v_n)$。如何在$v_1$上总结$v_n$$f$的所有可能值?

例如,如果$V={v_1,v_2}$$v_1 \in {1,2}$以及$v_2 \in {3,4,5}$$f(v_1,v_2)=v_1.v_2$那么我正在寻找:

$$\sum\limits_{v_1\in {1,2}}{\sum\limits_{v_2 \in {3,4,5}}{f(v_1,v_2)}}=f(1,3)+f(1,4)+f(1,5)+f(2,3)+f(2,4)+f(2,5)$$

* $V$的大小可能会发生变化。所以它的大小也在变化。我不想以复杂的形式编写,但实际上我正在添加多个函数,每个函数都有自己的变量集。

2 个答案:

答案 0 :(得分:1)

您可以使用itertools.product

>>> from itertools import product
>>> V = [[1,2],[3,4,5]]
>>> summ = 0
>>> for x in product(*V):
    print x
    # or call some function : summ += func(*x)
...     
(1, 3)
(1, 4)
(1, 5)
(2, 3)
(2, 4)
(2, 5)

答案 1 :(得分:0)

您可以使用列表来表示集合。所以V是一个列表清单。

V = [[1,2],[3,4,5]]
r = [[]]
for v in V:
    r = [ i + [y] for y in v for i in r ]

# at this point, r contains the inputs for your functions
sum = 0
for domain in r:
    sum += function(domain)

您所要做的就是定义您的函数以接受列表。在您的示例中,它将是:

def function(l):
    return l[0] * l[1]