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

Python如何比较数组adjacent元素且避免列表索引越界错误

如何比较数组中的两个adjacent(相邻)元素,同时不会触发索引越界错误?

你给出的原始代码报错是因为遍历到最后一个索引时,i+1超出了数组的下标范围,以下是几种不需要调整遍历范围为len(n)-1、同时可正常访问最后一个元素的实现方案:

方案1:遍历中加边界判断

在执行相邻元素比较前,先判断当前下标是否为最后一位,仅非最后一位时执行比较,最后一位可单独处理你的业务逻辑:

def count(n):
    # 先处理空输入的边界场景
    if not n:
        print(0, None)
        return
    counter = 1
    for i in range(len(n)):
        # 仅非最后一位时执行相邻比较
        if i < len(n) - 1 and n[i] == n[i+1]:
            counter += 1
    # 遍历结束后i就是最后一位下标,可直接访问
    print(counter, n[i])

方案2:用zip配对相邻元素(更简洁的无索引写法)

直接用zip将原数组和偏移一位的数组配对,自动生成所有相邻元素对,不需要手动管理索引,最后一位元素可单独取值处理:

def count(n):
    if not n:
        print(0, None)
        return
    counter = 1
    # zip会自动截断到较短的序列长度,不会产生越界
    for curr, next_val in zip(n, n[1:]):
        if curr == next_val:
            counter += 1
    # 直接取最后一位元素即可
    print(counter, n[-1])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:15:05