You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何用next()实现迭代器匹配返回值、无匹配返回None的单行写法

解决方案

next() 内置函数本身支持传入第二个参数作为迭代器耗尽时的默认返回值,直接修改代码如下即可:

def my_func(some_iter):
    return next(('yes' for x in some_iter if x%2 == 0), None)

验证效果

测试你给出的用例:

some_list1 = [1, 2, 3, 4]
some_list2 = [1, 7, 3, 5]
print(my_func(some_list1)) # 输出 yes
print(my_func(some_list2)) # 输出 None

说明

  • 原写法报错的原因是没有给next()指定默认返回值,当生成器('yes' for x in some_iter if x%2 == 0)没有符合条件的元素时,会直接抛出StopIteration异常
  • 新增的第二个参数None会在迭代器耗尽时直接返回,不会触发异常
  • 整个逻辑仍然是单次遍历,找到第一个符合条件的元素就立即返回,不会遍历整个迭代器,性能和原写法一致

内容的提问来源于stack exchange,提问作者Niewasz Biznes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:06:02