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

Python判断列表严格降序时循环比较末尾元素索引越界问题

问题原因分析
  • 索引越界:原代码循环遍历范围是range(len(lst)),当i等于列表最后一个索引时,i+1超出了列表的最大索引范围,触发越界错误。
  • 提前返回错误:第二种写法在单次比较符合左大于右的条件时就直接返回True,没有完成所有相邻元素的校验,导致结果错误。
解决方法

修正后代码

# 因需求是判断严格降序,建议将函数名改为更贴合语义的is_strictly_descending,如需保留原函数名可自行修改
def is_strictly_descending(lst):
    # 边界处理:空列表、单元素列表默认符合严格降序规则,可根据实际需求调整该逻辑
    if len(lst) <= 1:
        return True
    # 循环范围调整为len(lst)-1,避免i+1越界
    for i in range(len(lst)-1):
        # 存在任意一个右侧元素大于等于左侧,直接返回False
        if lst[i] <= lst[i+1]:
            return False
    # 所有相邻元素校验通过,才返回True
    return True

测试验证

  • 输入[5,4,3,2]:返回True,符合预期
  • 输入[5,4,3,6]:返回False,符合预期
  • 输入[3,5,2,4]:返回False,符合预期
可选简写方案

如果需要更简洁的写法,可以用Python内置的all()函数实现:

def is_strictly_descending(lst):
    return all(lst[i] > lst[i+1] for i in range(len(lst)-1))

all()函数会校验生成器中的所有表达式是否都为True,只要有一个为False就返回False,逻辑和手动循环完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:24:04