如果集合中的所有元素都为True,则all((方法返回True。以下矛盾结果背后的逻辑是什么:
结果1:
D = {'0', '000', ''}
all(D)
#output:
False
结果2:
for e in D:
print(all(e))
#output:
True
True
True
python文档在这里很清楚:
all(可迭代(
如果可迭代的所有元素都为True(或可迭代为空(,则返回True。
在第二种情况下,你基本上是在问:
all('')
它是空的可迭代的,所以它是CCD_。
在第一种情况下,您将询问集合中的每个项是否为布尔True,而空字符串是否为而非truthy。基本上可以归结为:
all('') != bool('')
根据我所看到的,空字符串被解释为伪
D = {'0', '000', 'x'}
print(all(D))
True
与
D = {'0', '000', ''}
print(all(D))
False