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