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

Nat*_*man 100 python list

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

x: list of uint;
if (x.has(it < 0)) {
    // do something
};
Run Code Online (Sandbox Code Playgroud)

itSpecman关键字在哪里依次映射到列表的每个元素.

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

if (True in [t < 0 for t in x]):
    # do something
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*Ken 170

any():

if any(t < 0 for t in x):
    # do something
Run Code Online (Sandbox Code Playgroud)

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

if True in (t < 0 for t in x):
Run Code Online (Sandbox Code Playgroud)

  • 更正:如果您打算在...中使用“True”,请重新考虑并改用“any”。 (3认同)

Dan*_*den 28

使用any().

if any(t < 0 for t in x):
    # do something
Run Code Online (Sandbox Code Playgroud)

  • 我相信这是因为它是一个生成器表达式,而不是列表理解。这是[有关生成器表达式的更多信息](/sf/ask/25536171/)。 (3认同)
  • 谁能解释一下为什么我们不将列表理解括在括号中,如下所示:`if any([t &lt; 0 for t in x])`? (2认同)

Ror*_*ory 10

Python有一个内置的any()函数,正是出于这个目的.