Python';s all()未给出检查小数值列表小于某个值的预期结果
在python控制台(使用2.7)中,如果我输入以下代码:Python';s all()未给出检查小数值列表小于某个值的预期结果,python,function,built-in,Python,Function,Built In,在python控制台(使用2.7)中,如果我输入以下代码: vals = [1.2e-5, 1.5e-5, 3.2e-5, 4.5e-5] for val in vals: print val < 0.001, vals=[1.2e-5,1.5e-5,3.2e-5,4.5e-5] 对于val中的val:打印val
vals = [1.2e-5, 1.5e-5, 3.2e-5, 4.5e-5]
for val in vals: print val < 0.001,
vals=[1.2e-5,1.5e-5,3.2e-5,4.5e-5]
对于val中的val:打印val<0.001,
输出为预期的True
但是!这是我的问题,如果我尝试all(vals)<0.001
它会返回false吗
是数字格式给它带来了问题还是别的什么?如果我再次执行此操作,但将VAL列表替换为VAL=[2,2,2,2]
,并检查<3
,我将以两种方式获得所需的输出
编辑
有用的答案,值得注意的是所有([0.1,0.1,0.1])的计算结果都是True,但是0.1==True的计算结果是False?这是怎么回事?“非零”值的计算结果是否为真,但实际上不是真的?all(vals)
检查所有值是否为布尔真(即非零)。这是真的。True不小于0.001
我想您想要的是
all(val中的val为val<0.001)
您的用法是错误的<代码>全部(对于VAL中的x,x<0.001)应正常
all(vals)<0.001
将检查所有vals
是否真实,然后将得到的True
或False
结果与0.001
进行比较,这很奇怪。check@sam2090最疯狂的是我实际上已经读过了,但我仍然看不出我做错了什么!!我猜是因为盯着什么东西看太久了。现在一切都好了!你是正确的,我没有正确地使用它,但是你可以添加关于我添加到我的问题中的编辑的任何信息吗?你是正确的,我没有正确地使用它,但是你可以添加关于我添加到我的问题中的编辑的任何信息吗?int(True)==1
<代码>整数(假)=0。因此,True==1
和False==0
。这与<0.001
的关系现在应该很明显:)@Amadan:您甚至不需要int
调用,因为bool
是int
的子类True==1
isTrue
@Blckknght:是的;我写这封信是为了让这一点失去意义;但我的意思是,如果您计算int(True)
,您可以在控制台中看到它打印1
@Blckknght知道它是int的一个子类很酷,肯定会让事情变得显而易见。也感谢阿玛丹的澄清