1

假设我们有一个变量 sets$V={v_1,v_2,...,v_n}$并假设每个变量从 sets 中获取很少的值W_i。所以$v_i \in W_i$。现在有一个功能$f(v_1,...,v_n)$。如何总结$v_1$to $v_n$on的所有可能值$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$可以改变。所以它的大小也在变化。我不想以复杂的形式编写,但实际上我正在添加多个函数,每个函数都有自己的变量集。

4

2 回答 2

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)
于 2013-06-22T17:06:42.043 回答
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]
于 2013-06-22T17:00:51.640 回答