1

変数セットが$V={v_1,v_2,...,v_n}$あり、各変数がセットからいくつかの値を取得するとしますW_i。だから$v_i \in W_i$。今、関数があります$f(v_1,...,v_n)$$v_1$to $v_n$onのすべての可能な値を合計するにはどうすればよい$f$ですか?

たとえば、if $V={v_1,v_2}$and $v_1 \in {1,2}$and $v_2 \in{3,4,5}$and $f(v_1,v_2)=v_1.v_2$then 私が探しているのは次のとおりです。

$$\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 に答える