python - 即使我使用的是范围,浮点对象也是不可迭代的
问题描述
我正在尝试编写一个计算二项式概率的函数(我知道 scipy.stats.binom 存在,但我不能使用它)。这是我得到的:
import math
def binomial(l,u,n,p):
for i in range(l,u):
f=sum(math.comb(n,i)*(p**i)*(1-p)**(n-i))
return(f)
但是,当我使用二项式(0,5,10,0.25)对其进行测试时,我收到一条错误消息“TypeError:'float' object is not iterable”。据我所知,如果我忘记使用循环范围但我在这种情况下这样做了,这会发生很多。任何提示为什么它不起作用?
解决方案
您的问题在于使用sum
. 您将浮点数传递给sum
. 要获得预期的输出,您需要存储math.comb(n,i)*(p**i)*(1-p)**(n-i)
每个循环的值。
例子:
def binomial(l,u,n,p):
values = []
for i in range(l,u):
values.append(math.comb(n,i)*(p**i)*(1-p)**(n-i))
return sum(values)
或列表理解:
def binomial(l,u,n,p):
values = [math.comb(n,i)*(p**i)*(1-p)**(n-i) for i in range(l,u)]
return sum(values)
推荐阅读
- ios - 生成 RSA 密钥对 Swift iOS
- spring-boot - SpringBoot中对下游客户端的流式响应
- google-diff-match-patch - 在生成补丁时忽略 Google Diff Match Patch 中的 EOL Unix 和 Windows
- mysql - Sql join 与 sum up 重复
- android - 如何增加 OkHttpChannelBuilder 的最大消息大小?
- r - 如何将顶点之间的所有路径的权重相乘然后求和?
- c# - 为什么我不能使用 Process.Start 启动 Robocopy
- php - Woocommerce 购买活动
- bash - 尝试将 bash 变量从 .sh 文件导出到另一个运行它的文件
- r - 使用列表更改列 data.table 中的值