python - 算法: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:列表索引超出范围
解决方案
所以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
,您可以取消第一个任务
推荐阅读
- ios - 无法在当前视图上显示 json 数据 - Linkedin iOS 集成(Swift 4.2)
- reactjs - 你能在 React App 中拥有一个全局可访问的函数吗?
- php - php解析JSON子数组
- html - 在具有相同宽度和高度的容器内创建一个带有百分比的 div
- node.js - Nodejs、MongoDB异步回调问题
- html - 下拉菜单出错
- excel - Excel VBA引用表名在最后一行之后插入数据
- python - 带有 Unix 域套接字的 Python 中的 gRPC 服务器
- java - int[] 不能转换为 int[][]
- visual-studio - Visual Studio 配置管理器中的 Deploy 复选框对 SSDT SQL 项目有什么作用?