首页 > 解决方案 > 算法:IndexError:列表索引超出范围(Python)

问题描述

我是 python 新手,我想知道为什么我的程序在第 4 行显示“IndexError:list index out of range”。任何人都可以帮忙。

# A is the array and N is the size of the array.
A =[1,78,46,4,34,10,50,2]
N = len(A)
def Algorithm(A,N):
    #B <- Array[N]
    B = A[N]
    B=[0]*N
    for i in range(1,N):
        B[A[i]]+=1
        i=1
    #for i <-- 1 to N
    for j in range(1,N):
    #for k <-- to B[j]
        for k in range(0,B[j]):
            A[i]=j
            i+=1
    return

Algorithm(A,N)
print(A)

错误:

  2 N = len(A)
  3 def Algorithm(A,N):
  4     B = A[N]
  5     B=[0]*N
  6     for i in range(1,N):

IndexError:列表索引超出范围

标签: pythonalgorithm

解决方案


所以List index out of range来自B = A[N]因为 N 代表 A 的总长度。但是,列表的元素索引从 0 到 N-1,这给了你 length (N-1) - 0 + 1 => N。如果要分配B给 的最后一个元素A,可以通过B = A[N-1]或来完成B = A[-1],因为负索引从末尾指向列表的元素。但是,鉴于您 redeclare B = [0] * N,您可以取消第一个任务


推荐阅读