检查列表中任何元素是否满足条件的Pythonic方式

164 投票
3 回答
167509 浏览
提问于 2025-04-15 13:55

我在用Python写代码,有一个列表,我想检查一下里面有没有负数。有没有什么简单的函数或者语法可以用来检查所有元素,看看有没有负数呢?我查了一下文档,没找到类似的东西。我想到的办法是:

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

我觉得这个方法不太优雅。有没有更好的方法在Python中做到这一点呢?


另外,想了解如何检查列表中所有元素是否符合某个条件,可以看看如何检查列表中所有元素是否满足条件?。记住,“any”和“all”的检查是有关系的,类似于“或”和“与”的关系,这个可以参考德摩根定律

这里已有的答案使用了内置函数any来进行遍历。想了解any和它的对应函数all是怎么工作的,可以查看Python的any和all函数是如何工作的?

如果你想检查的条件是“是否在另一个容器中”,可以参考如何检查列表中是否包含以下某个项目?,以及它的对应问题如何检查列表中是否包含以下所有项目?。使用anyall是可以的,但也有更高效的解决方案。

3 个回答

11

Python 里有一个内置的 any() 函数,正是用来做这个的。

41

使用 any() 这个函数。

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

any():

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

另外,如果你打算使用 "True in ..." 这种写法,建议用生成器表达式,这样就不会占用 O(n) 的内存:

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

撰写回答