应用于iterable的每个元素的布尔语句上的分支

Sch*_*ote 4 python conventions list python-3.x

是否有一种Pythonic方式可以说"这个迭代中的任何元素都是如此"吗?或者,换句话说,是否有一个更清洁的版本:

if [True for x in mylist if my_condition(x)]:
    ...
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 5

你可以使用any:

>>> mylist = [1, 2, 3]
>>> any(x > 4 for x in mylist)
False
>>> any(x % 2 == 0 for x in mylist)
True
Run Code Online (Sandbox Code Playgroud)
if any(my_condition(x) for x in mylist):
    ....
Run Code Online (Sandbox Code Playgroud)

注意:使用生成器表达式而不是列表推导,您不需要评估所有项目.