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

Python中map对象二次遍历失效导致次高分计算错误求助

问题原因
  • Python 3 中 map() 函数返回的是迭代器对象,迭代器仅支持单次遍历:第一次在find_max_score函数中遍历arr计算最高分后,迭代器指针已经移动到末尾,第二次传入find_runner_up_score函数时再次遍历不会返回任何元素,因此for循环完全不执行,次高分始终为初始值0。
解决方法

将map()返回的迭代器转换为支持多次遍历的列表即可,修改主程序中的arr赋值代码:

if __name__ == '__main__':
    n = int(input())
    # 把map迭代器转成列表,支持多次遍历
    arr = list(map(int, input().split()))

    max_score=find_max_score(arr)
    runner_up_score=find_runner_up_score(max_score,arr)
可选优化点
  • 可以调整逻辑通过单次遍历同时计算最高分和次高分,降低遍历次数提升性能
  • 不要将最高分、次高分的初始值默认设为0,避免输入序列全为负数时计算结果错误,可改为初始值为float('-inf')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:18:03