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

为何Python中遍历enumerate对象的第二个for循环无输出?

为什么复用同一个enumerate对象第二次遍历时没有输出?

嘿,这个问题我可太熟了!咱们先看看你这段代码:

def miniMaxSum(arr):
    # Write your code here.
    eArr = enumerate(arr)
    maxNum = 0
    indexMax = -1;
    for a,b in eArr:
        if b > maxNum:
            maxNum = b
            indexMax = a
    for index,number in eArr:
        print("hello")

问题的核心在于Python里迭代器的一次性特性:

  • enumerate()函数返回的不是可重复遍历的列表,而是一个迭代器对象。迭代器的工作逻辑是“按需生成元素”,而且一旦你把它从头到尾遍历完(内部指针走到了最后一个元素的后方),它就彻底“耗尽”了——再去遍历它,不会有任何元素返回。
  • 你第一个for循环已经把eArr这个迭代器的所有元素都取出来处理了,第二个for循环再访问它时,迭代器里已经没有剩余元素,所以循环体print("hello")根本不会执行。

那怎么解决呢?给你两个简单的方案:

  1. 把迭代器转成列表:把eArr = enumerate(arr)改成eArr = list(enumerate(arr)),这样它就变成了普通列表,你可以随便遍历多少次,每次都是从头开始。
  2. 每次遍历重新生成迭代器:不要复用eArr变量,第一个循环用for a,b in enumerate(arr),第二个循环也直接用for index,number in enumerate(arr),每次都是新的迭代器,自然能正常遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:55:48