Python 的 all() 未给出预期结果检查小数字列表是否小于某个值

Python's all() not giving the expected result checking a list of small numbers are less than some value

在 python 控制台(使用 2.7)中,如果我输入以下代码:

vals = [1.2e-5, 1.5e-5, 3.2e-5, 4.5e-5]
for val in vals: print val < 0.001,

输出是预期的 True True True True

但是!这是我的问题,如果我尝试 all(vals) < 0.001 它 returns 错误?

是数字格式问题还是其他原因?如果我再次执行此操作但将 vals 列表替换为 vals = [2,2,2,2] 并检查 < 3 我会得到两种方式所需的输出!

编辑 有用的答案,有趣的是,all([0.1, 0.1, 0.1]) 的计算结果为 True,但 0.1 == True 的计算结果为 False?这是怎么回事? "nonzero" 值是否为 True 但实际上不是 "True"?

all(vals) 检查是否所有值都是布尔值 True(即非零)。那是真实的。真不小于0.001.

我想你想要 all(val < 0.001 for val in vals)

你的用法是错误的。 all(x < 0.001 for x in vals)应该没问题。

all(vals) < 0.001 将检查所有 vals 是否为真,然后将您得到的 TrueFalse0.001 进行比较,这是奇怪。