简单python for循环上的列表索引超出范围错误
Posted
技术标签:
【中文标题】简单python for循环上的列表索引超出范围错误【英文标题】:List index out of range error on simple python for loop 【发布时间】:2018-05-19 20:15:26 【问题描述】:有人可以向我解释为什么这个 for 循环不起作用。我试图在另一个程序中使用类似的东西来循环使用这个 N 作为参数的列表。
N = [20,40,60,80]
for j in N:
print(j)
for i in range(0,N[j]):
print(i)
提前致谢!
【问题讨论】:
你的目标是什么? 为什么它不起作用?你期待什么结果? N 是在模拟盒子中弹跳的球数。最终目标是计算在不同温度下使用不同数量的球施加的压力。但由于某种原因,我陷入了这个看似简单的列表错误j
是来自N
的值,而不是index
所以你得到N[80]
但N
没有那么多元素。 - 使用range(0, j)
@furas 它告诉我“for i in range(0,N[j]):” is a IndexError: list index out of range
【参考方案1】:
您超出了范围,因为 j 正在获取 N 数组元素的值,而不是索引。因此,j 不是 0、1、2、3,而是 20、40、60、80。
因此,当您到达for i in range((0, N[j])
时,您要求的是 N[20],这远远超出了 N 列表的长度。
你可以这样做:
N = [20,40,60,80]
for j in range(len(N)):
# ^^^^^^^^^^^^^
print(j)
for i in range(0,N[j]):
print(i)
【讨论】:
很高兴它有帮助。如果你喜欢我的回答,请选择它,然后回去学习! :)【参考方案2】:你可以使用枚举
N = [20,40,60,80]
for index, j in enumerate(N):
print(j)
for i in range(0,N[index]):
print(i)
【讨论】:
【参考方案3】:试试:
for i in range(0,j):
代替:
for i in range(0,N[j]):
因为N[j]
将访问超出列表中内容的方式,例如N[80]
,它不存在。这就是您收到IndexError: list index out of range
错误的原因。
要解决此问题,您需要在外循环上应用range()
:
for i in range(len(N)):
print(i)
for j in range(0, N[i]):
print(j)
当将它应用于内部循环中的range()
时,它只查看N
的索引i
,而不是实际元素,它们要大得多。
如果你想访问列表中关于索引的实际内容,试试这个:
N = [20,40,60,80]
for i in range(len(N)):
print(i, "->", N[i])
哪些输出:
0 -> 20
1 -> 40
2 -> 60
3 -> 80
如果你只想要数字:
for number in N:
print(number)
如果您希望以更 Python 的方式同时使用索引和数字:
for index, number in enumerate(N):
print(index, "->", number)
哪些输出:
0 -> 20
1 -> 40
2 -> 60
3 -> 80
【讨论】:
以上是关于简单python for循环上的列表索引超出范围错误的主要内容,如果未能解决你的问题,请参考以下文章
C# - 在for循环中使用相同的列表大小,索引超出了数组的范围[重复]
在python IndexError中使用for循环反转字符串:字符串索引超出范围[重复]
Networkx:通过循环遍历节点列表添加属性时,IndexError:列表索引超出范围