首页 > 解决方案 > python中的迭代

问题描述

例如,对于 [p1,p2,p3] = [0.4,0.3,0.8],并且 k=2。{1,2,3} 的 2 个子集以及当 i 在子集中时 Xi 为 1 的相应概率是

{1,2} = 0.024 = (0.4x0.3x(1-0.8))

{1,3} = 0.224 = (0.4x0.8x(1-0.3))

{2,3} = 0.144 = (0.3x0.8x(1-0.4))

{1,2}=0.024

{1,3}=0.224

{2,3}=0.144 因此,

P(X=k)=0.024+0.224+0.144=0.392。

这将是什么python代码?我尝试使用 itertools.combination 但它在 0x00000218F0129A48 处显示 itertools.combinations 对象

标签: pythonpython-3.x

解决方案


它可能很笨重,但它可以满足您的需求。

import itertools
a = [0.4,0.3,0.8]
l = list(itertools.combinations(a,len(a)-1))
print(l)
x = []
while l:
    b = l.pop()
    for item in a:
        if not item in b:
            multiply = 1
            for s in b:
                multiply = multiply * s
            x.append(multiply * (1 - item))
            print(x[-1])

print(sum(x))

输出:

0.144
0.22400000000000003
0.023999999999999994
0.392

推荐阅读