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

Posted

技术标签:

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

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

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

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

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

不错!不知道有这种事! @AshwiniChaudhary -- 我更喜欢改变程序的逻辑。如果有任何无效,则拒绝该列表(而不是 OP 当前拥有的列表——如果没有任何无效,则保留该列表)。但这最终由 OP 决定:) if any(…): return False 直接将循环替换为 OP 代码中的 return False。将其压缩为 return not any(…) 是可能值得做的进一步步骤,但我认为这是对问题的更明显的答案。

以上是关于在 Python 中拒绝列表的快速方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 shapely 和 geopandas 检查点列表是不是接近 python 中的线串列表的快速方法

如何在 Python 中快速从 IP 地址列表中查找纬度/经度?

计算 Python 列表中出现次数的最快方法

Python列表的元素比较

如何在python中访问列表列表中的列

9. python 入门教程快速复习,序列,数值类型,字符串方法,列表集合字典方法,文件操作,解析式