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

时间:2009-08-27 17:36:55

标签: python list

我有一个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中有更好的方法吗?

3 个答案:

答案 0 :(得分:158)

any()

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

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

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

答案 1 :(得分:26)

使用any()

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

答案 2 :(得分:10)

Python有一个内置的any()函数用于此目的。