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
是否为真,然后将您得到的 True
或 False
与 0.001
进行比较,这是奇怪。
在 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
是否为真,然后将您得到的 True
或 False
与 0.001
进行比较,这是奇怪。