【问题标题】:Quick way to reject a list in Python在 Python 中拒绝列表的快速方法
【发布时间】:2013-05-26 11:27:40
【问题描述】:

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

def valid(myList):
    for x in myList:
        if isInvalid(x):
           return False
    return True

有没有更 Pythonic 的方式来做到这一点?您可以对其进行过滤,但这会评估列表中的所有项目,而仅评估第一个项目可能就足够了(如果它不好的话)......

非常感谢您的帮助。

【问题讨论】:

    标签: python list validation iterable


    【解决方案1】:

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

    if any(isInvalid(x) for x in myList):
       #reject
    

    语法简洁优雅,您可以得到与原始函数相同的短路行为。

    【讨论】:

    • 不错!不知道有这种事!
    • @AshwiniChaudhary -- 我更喜欢改变程序的逻辑。如果有任何无效,则拒绝该列表(而不是 OP 当前拥有的列表——如果没有任何无效,则保留该列表)。但这最终由 OP 决定:)
    • if any(…): return False 直接将循环替换为 OP 代码中的 return False。将其压缩为 return not any(…) 是可能值得做的进一步步骤,但我认为这是对问题的更明显的答案。
    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2010-10-17
    • 2022-09-27
    • 2011-12-05
    相关资源
    最近更新 更多