Pythonic方法检查条件是否适用于列表的任何元素

问题描述 投票:93回答:3

我有一个Python列表,我想检查是否有任何元素是否定的。 Specman有列表的has()方法:

x: list of uint;
if (x.has(it < 0)) {
    // do something
};

其中it是依次映射到列表中每个元素的Specman关键字。

我觉得这很优雅。我查看了Python documentation,找不到类似的东西。我能想到的最好的是:

if (True in [t < 0 for t in x]):
    # do something

我发现这相当不优雅。有没有更好的方法在Python中执行此操作?

python list
3个回答
160
投票

any()

if any(t < 0 for t in x):
    # do something

此外,如果您要使用“True in ...”,请将其设为生成器表达式,这样就不需要O(n)内存:

if True in (t < 0 for t in x):

26
投票

使用any()

if any(t < 0 for t in x):
    # do something

10
投票

Python具有内置的any()功能,正是出于此目的。

© www.soinside.com 2019 - 2024. All rights reserved.