我发现关于all
函数的行为很奇怪,希望能对逻辑或内部工作有一个正确的解释。
假设我有一个空列表-items = []
通常为“假”,即bool(items)
或bool([])
为False
。但是,all
将其视为True
:
all([item for item in items]) # True
all(item for item in items) # True
all(items) # True
all([]) # True
但是奇怪的是,列表中有一个空列表,其结果为false:
all([[]]) # False
这似乎并不影响any
的行为:
any([item for item in items]) # False
any(item for item in items) # False
any(items) # False
any([]) # False
any([[]]) # False
我已经在python 3.7.5中进行了测试,我不知道这是否是其他版本中的行为。有人可以解释一下吗?