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

Python使用enumerate()时如何引用枚举首参数实现每日气温等待天数计算

enumerate() 使用的核心问题拆解

对枚举返回值的认知偏差

很多使用enumerate()时的报错都来源于对返回值的误解:这个函数每次循环会按顺序输出两个独立的单值,结构为(计数索引, 当前位置的遍历元素),没有任何可二次索引的能力。
你原代码里的错误点就来源于此:

  • 把枚举返回的第二个值(实际是单个气温数值)命名为distance、distance2,后续错误地对这些单值做索引操作,比如写distance2[j]、distance[k],本质是对整数类型做数组索引,会直接触发类型报错。
  • 命名混淆导致逻辑错位:distance对应的是当日气温值,不是用来计算间隔的距离变量,后续代码的计算逻辑从变量定义层面就出现了偏差。

匹配需求的正确实现(两层枚举思路)

你的需求是:为每个日期计算需要等待多少天才能遇到更高气温,没有后续更高气温则返回0。对应两层枚举的写法可以按照以下逻辑实现:

  1. 外层枚举遍历所有日期,拿到每个日期的原列表索引i、当日气温值
  2. 内层从当前日期的下一个位置开始遍历,找到第一个气温更高的日期,计算两个日期的索引差就是等待天数
  3. 找到符合条件的日期就立刻停止内层遍历,避免多余计算;如果遍历完后续所有日期都没找到更高气温,就记录等待天数为0

可直接运行的正确代码如下:

nums = [1,5,20,9,3,10,50,7]
waiting_result = []

# 外层枚举:i为日期在原列表的索引,cur_temp为当日气温
for i, cur_temp in enumerate(nums):
    wait_days = 0
    # 内层枚举:切片取当前日期之后的所有气温,设置起始索引为i+1保证拿到原列表的真实位置
    for j, next_temp in enumerate(nums[i+1:], start=i+1):
        if next_temp > cur_temp:
            wait_days = j - i
            break # 找到第一个更高气温就停止遍历
    waiting_result.append(wait_days)

print(waiting_result)

运行后输出完全匹配预期:[1,1,4,3,1,1,0,0]

原代码的逻辑偏差修正

你原代码的两个核心逻辑问题:

  • 内层循环固定遍历nums[1:],没有跟随外层的当前日期位置动态调整遍历起点,会跨日期计算无效的间隔值
  • 计算间隔的语句完全误用了枚举返回的单值属性,即使修正语法错误,也无法得到正确的间隔结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 02:45:03