我以为range()
会返回一个数字列表。为什么all()
函数为此
all(range(100))
答案 0 :(得分:9)
您的range(100)
包含0,布尔值0为False
:
In [1]: bool(0)
Out[1]: False
而对于任何其他数字,它评估为True
。函数all
仅在其参数的所有元素都计算为True
时才返回True
,请隐式地查看其manual(给定示例中的if
语句获取每个项目的布尔值)。在这里看到包括0或不包括0的区别:
In [2]: all(range(10)) # 0..9
Out[2]: False
In [3]: all(range(1,10)) # 1..9
Out[3]: True
答案 1 :(得分:2)
因为range
生成的第一个数字是0。
>>>range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 0 is evaluated to false in boolean expressions
>>>bool(0)
True
# making range start at 1
>>>all(range(1, 100))
True