python中的迭代
比如说, [p1,p2,p3]=[0.4,0.3,0.8],k=2。的2-子集 {1,2,3} 以及相应的概率 席 是我的一个iff吗 在子集中的是 {1,2}=0.024=0.4x0.3x1-0.8 {1,3}=0.224=0.4x0.8x1-0.3 {2,3}=0.144=0.3x0.8x1-0.4 {1,2}=0.024 {1,3}=0.224 {2,3}=0.144 因此, PX=k=0.024+0.224+0.144=0.392 这方面的python代码是什么?我试着用itertools.combination,但它python中的迭代,python,python-3.x,Python,Python 3.x,比如说, [p1,p2,p3]=[0.4,0.3,0.8],k=2。的2-子集 {1,2,3} 以及相应的概率 席 是我的一个iff吗 在子集中的是 {1,2}=0.024=0.4x0.3x1-0.8 {1,3}=0.224=0.4x0.8x1-0.3 {2,3}=0.144=0.3x0.8x1-0.4 {1,2}=0.024 {1,3}=0.224 {2,3}=0.144 因此, PX=k=0.024+0.224+0.144=0.392 这方面的python代码是什么?我试着用itertool
在0x00000218F0129A48处显示itertools.combines对象可能很笨重,但它符合您的要求
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
你能给我们看一下你试过的代码吗?把它转换成列表。列表你的组合试图把它转换成列表。它显示float not iterableIf a=[p1,p2,p3],listitertools.combinationsa,2将产生p1,p2,p3的组合。不幸的是,它只适用于3个列表。感谢您的回复。我相信,经过编辑使其适用于3个以上的列表。它确实有效,但输出是错误的。因为只将s[0]*s[1]的值相乘,然后再将该值与剩余项的数量相乘。我不确定此时应如何操作,k是否需要更改?