您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-从符合条件的可迭代项中获取第一项

Python-从符合条件的可迭代项中获取第一项

在Python 2.6或更高版本中:

如果StopIteration在找不到匹配元素的情况下希望被引发:

next(x for x in the_iterable if x > 3)

如果你希望返回default_value(例如None),请执行以下操作:

next( (x for x in the_iterable if x>3), default_value)

请注意,在这种情况下,你需要在生成器表达式周围加一对括号-当生成器表达式不是唯一的参数时,总是需要它们。

我看到大多数答案都坚决地忽略了next内置函数,因此我认为出于某种神秘的原因,它们100%专注于2.5版及更早的版本-并未提及Python版本问题(但后来我没有看到该提及确实提到next内置答案的原因,这就是为什么我认为有必要自己提供答案的原因-至少以这种方式记录“正确版本”问题;-)。

在2.5中,如果迭代器立即完成.next(),则迭代器的方法立即提高StopIteration-即,对于你的用例,如果可迭代项中没有项满足条件。如果你不在乎(即,你知道必须至少有一个令人满意的项目),则只需使用.next()(在genexp上最好next,Python 2.6内置的行及更高版本)。

如果你确实愿意的话,按照你在Q中首先指出的方法内容包装在函数中似乎是最好的,虽然你建议的函数实现很好,但是你也可以使用itertools,for...: break循环或genexp,或者将a try/except StopIteration作为函数的主体,如各种答案所示。这些替代方案都没有太多附加值,因此我会选择你最初提出的简洁的版本。

python 2022/1/1 18:21:49 有477人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶