Python中的all()函数何时打印为False?

时间:2017-01-11 11:49:48

标签: python

x = [0, 1, -2, 3, 4, 5]
all ([i for i in range (1, len(x)) if x [i-1] < x[i]]) ?

为什么此代码会打印True
1> -2所以我应该打印False

2 个答案:

答案 0 :(得分:5)

您的代码没有按照您的想法执行。它首先过滤掉一些元素,然后评估一堆索引的真实性。由于所有索引都是严格正数,因此它们都是真实的,您的代码总是评估为True

根据您的描述,您实际上要做的是:

>>> all(x[i-1] < x[i] for i in range (1, len(x)))
False

迭代所有连续元素对,并检查第一个元素是否小于第二个元素。

另一种写这个的方法是:

>>> all(a < b for (a, b) in zip(x, x[1::]))
False

答案 1 :(得分:3)

i的所有值都来自range(1, len(x)),因此它们都是正整数。正整数是真的,因此all()将返回True