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

Fad*_*dov 1 python

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

为什么要打印此代码True
1> -2所以它应该打印False我认为.

NPE*_*NPE 5

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

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

>>> all(x[i-1] < x[i] for i in range (1, len(x)))
False
Run Code Online (Sandbox Code Playgroud)

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

另一种写这个的方法是:

>>> all(a < b for (a, b) in zip(x, x[1::]))
False
Run Code Online (Sandbox Code Playgroud)