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

Python遍历3元素列表时自定义迭代器为何输出4次迭代器对象?

现象产生原因

核心问题出在代码里print(iterator)和next(iterator)的执行顺序:你先执行了打印操作,再调用next()获取元素判断是否遍历结束,3个元素的迭代器会触发4次打印,具体执行流程如下:

  • 初始化迭代器后进入第一次循环:先打印迭代器对象,调用next()返回1,无异常,继续循环
  • 第二次循环:先打印迭代器对象,调用next()返回2,无异常,继续循环
  • 第三次循环:先打印迭代器对象,调用next()返回3,无异常,继续循环
  • 第四次循环:先打印迭代器对象,调用next()时迭代器已无剩余元素,抛出StopIteration异常,才触发break跳出循环

如果要让打印次数和元素数量保持一致,调整两个语句的顺序即可,修改后的参考代码:

def special_for(iterable):
    iterator = iter(iterable)
    while True:
        try:
            next(iterator)
            print(iterator)
        except(StopIteration):
            break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:54:06