python 中 all() 的行为
Behaviour of all() in python
>>all([])
True
>>all([[]])
False
>>all([[[]]])
True
>>all([[[[]]]])
True
all() 的文档显示它 returns 是的,所有元素都是 True/For 一个空列表。
为什么 all([ [ ] ]) 的计算结果为 False?
因为 [ ] 是 [ [ ] ] 的成员,它的计算结果也应该为 True。
all
的文档字符串如下:
all(iterable) -> bool
Return True if bool(x) is True for all values x in the iterable.
If the iterable is empty, return True.
这解释了行为。 []
是一个空的可迭代对象,因此 all
return 为真。但是 [[]]
是 而不是 一个空的可迭代对象;它是一个包含一个项目的可迭代对象,一个空列表。在那个空列表上调用 bool
returns False;所以整个表达式都是假的。
其他例子returnTrue 因为单项不再为空,所以是boolean True。
>>all([])
True
因为列表中的所有可迭代项都是 True(虽然有零个可迭代项)
>>all([[]])
False
有一个空的可迭代对象(最里面的空列表),其计算结果为 False
>>all([[[]]])
True
此处唯一的可迭代对象 ([[]]
) 内部有一个空列表,因此计算结果为 True
>>all([[[[]]]])
>>True
同上
Python 中的列表当且仅当它们不为空时才计算为 True
(参见 this)。
all
returns True
当且仅当其参数的每个元素的计算结果为 True
.
对于第一个例子,你的列表是空的,all
returns True
.
在第二个例子中,列表的唯一元素是一个空列表,计算结果为 False
,因此 all
returns False
.
对于所有其他示例,列表的唯一元素包含更多列表,因此不为空且计算结果为 True
,因此 all
必须 return True
.
>>all([])
True
>>all([[]])
False
>>all([[[]]])
True
>>all([[[[]]]])
True
all() 的文档显示它 returns 是的,所有元素都是 True/For 一个空列表。 为什么 all([ [ ] ]) 的计算结果为 False? 因为 [ ] 是 [ [ ] ] 的成员,它的计算结果也应该为 True。
all
的文档字符串如下:
all(iterable) -> bool
Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True.
这解释了行为。 []
是一个空的可迭代对象,因此 all
return 为真。但是 [[]]
是 而不是 一个空的可迭代对象;它是一个包含一个项目的可迭代对象,一个空列表。在那个空列表上调用 bool
returns False;所以整个表达式都是假的。
其他例子returnTrue 因为单项不再为空,所以是boolean True。
>>all([])
True
因为列表中的所有可迭代项都是 True(虽然有零个可迭代项)
>>all([[]])
False
有一个空的可迭代对象(最里面的空列表),其计算结果为 False
>>all([[[]]])
True
此处唯一的可迭代对象 ([[]]
) 内部有一个空列表,因此计算结果为 True
>>all([[[[]]]])
>>True
同上
Python 中的列表当且仅当它们不为空时才计算为 True
(参见 this)。
all
returns True
当且仅当其参数的每个元素的计算结果为 True
.
对于第一个例子,你的列表是空的,all
returns True
.
在第二个例子中,列表的唯一元素是一个空列表,计算结果为 False
,因此 all
returns False
.
对于所有其他示例,列表的唯一元素包含更多列表,因此不为空且计算结果为 True
,因此 all
必须 return True
.