集合的all()方法的逻辑


如果集合中的所有元素都为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

最新更新