True 和 False 怎么可能是空字符串? [复制]

Posted

技术标签:

【中文标题】True 和 False 怎么可能是空字符串? [复制]【英文标题】:How can be empty string both True and False? [duplicate] 【发布时间】:2021-05-16 18:47:33 【问题描述】:
e = ''
all(e), any(e)

我预计all(e), any(e) 都返回 False。但是,all(e) 返回 True,而 any(e) 返回 False。

我不明白空字符串如何同时为真和假?

【问题讨论】:

e 是一个空的可迭代对象,因此行为与all([])any([]) 相同。在一个零元素的迭代中,所有元素都是真的(all 意味着每个元素都必须是真的,当我们在可迭代中没有任何东西时,这是微不足道的)。在一个零元素的迭代中,所有零元素都是真的是错误的(any 表示至少有一个元素必须是真的,但是因为在可迭代中没有任何内容,所以它是微不足道的错误)。 【参考方案1】:

来自Python documentation:

all(iterable)

如果可迭代对象的所有元素都为真(或者如果可迭代对象为空),则返回True。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

当您使用字符串调用all() 时,它会像字符串一样遍历字符串。例如,all('foo') 等价于 all(['f', 'o', 'o'])

空字符串就像一个空列表,所以上面的粗体部分适用。空列表是vacuously true:

在数学和逻辑中,一个空洞的真理是一个有条件的或普遍的陈述,它只是因为不能满足前件而为真。例如,即使房间内没有手机,“房间内所有手机都已关闭”的说法也是正确的。在这种情况下,“房间里的所有手机都打开”的陈述也将是空洞的,就像两者的合取一样:“房间里的所有手机都打开和关闭”。出于这个原因,人们有时会说一个陈述是空洞的,只是因为它并没有真正说明什么。

有关空洞真实陈述的更多示例,请参阅this excellent answer。

【讨论】:

真的非常感谢!!!!由于您的解释,我100%理解这种好奇心!!!!特别是,即使房间里没有手机,“房间里所有手机都关闭”这句话我认为这是非常好的描述。非常感谢!!!! 真空真理的参考是金子,爱它。【参考方案2】:

来自documentation on all

如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True

来自documentation on any

如果iterable为空,返回False

你传递了一个空的可迭代对象,这就是发生的事情。

【讨论】:

以上是关于True 和 False 怎么可能是空字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python:将空字符串与 False 进行比较是 False,为啥?

复选框输入返回空字符串而不是 true/false,使用 React hook dom 和 material-ui FormControlLabel

js中各种类型的变量在if条件中是true还是false

Python:将空字符串与False进行比较是假的,为什么?

js中的真值和假值

js中 null, undefined, 0,空字符串,false,不全等比较