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

Python实现数组分割移首段到末尾时出现IndexError错误如何解决

问题排查与修复

错误根因

  • 越界错误出现在splitArr函数的内层循环逻辑:你设置内层循环的范围是range(0, n),当j遍历到最大值n-1时,arr[j + 1]实际访问的是arr[n],但长度为n的列表合法下标范围是0 ~ n-1,访问下标n直接触发越界报错。

修复方案

方案1:适配原有实现思路修改

仅需要调整内层循环的遍历上限为n-1,保证j+1最大为n-1即可:

def splitArr(arr, n, k): 
    for i in range(0, k): 
        x = arr[0]
        # 调整循环范围,j最大取到n-2,j+1最大为n-1不会越界
        for j in range(0, n-1):
            arr[j] = arr[j + 1]
          
        arr[n-1] = x
          
arr = [12, 10, 5, 6, 52, 36]
n = len(arr)
position = 1
  
splitArr(arr, n, position)
  
for i in range(0, n): 
    print(arr[i])

运行后输出结果为:

10
5
6
52
36
12

方案2:Python原生切片优化(更简洁高效)

不需要嵌套循环,用列表切片拼接可以直接实现需求,代码复杂度更低,运行效率更高:

def splitArr(arr, n, k): 
    # 直接把前k个元素切下来拼到数组末尾即可
    arr[:] = arr[k:] + arr[:k]
          
arr = [12, 10, 5, 6, 52, 36]
n = len(arr)
position = 1
  
splitArr(arr, n, position)
  
for i in range(0, n): 
    print(arr[i])

运行结果和方案1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 08:45:06