在Python中拒绝列表的快速方法

gt6*_*89b 6 python validation iterable list

我有一个python中的项目列表,以及一种检查项目是否有效的方法.如果任何一个项目无效,我需要拒绝整个列表.我能做到这一点:

def valid(myList):
    for x in myList:
        if isInvalid(x):
           return False
    return True
Run Code Online (Sandbox Code Playgroud)

有更多的Pythonic方式吗?你可以过滤它,但是这将评估列表中的所有项目,当评估第一个项目就足够了(如果它是坏的)......

非常感谢您的帮助.

mgi*_*son 14

执行此操作的典型方法是使用内置any函数和生成器表达式

if any(isInvalid(x) for x in myList):
   #reject
Run Code Online (Sandbox Code Playgroud)

语法干净而优雅,您可以获得与原始函数相同的短路行为.