简单python for循环上的列表索引超出范围错误
有人能给我解释一下为什么这个for循环不起作用吗。我正试图在另一个程序中使用类似的东西,使用这个N作为参数,循环遍历一个列表简单python for循环上的列表索引超出范围错误,python,list,for-loop,Python,List,For Loop,有人能给我解释一下为什么这个for循环不起作用吗。我正试图在另一个程序中使用类似的东西,使用这个N作为参数,循环遍历一个列表 N = [20,40,60,80] for j in N: print(j) for i in range(0,N[j]): print(i) 提前谢谢 您超出了范围,因为j取的是N数组元素的值,而不是索引。所以,j不是0,1,2,3,而是20,40,60,80。 因此,当你得到范围((0,N[j
N = [20,40,60,80]
for j in N:
print(j)
for i in range(0,N[j]):
print(i)
提前谢谢 您超出了范围,因为j取的是N数组元素的值,而不是索引。所以,j不是0,1,2,3,而是20,40,60,80。 因此,当你得到范围((0,N[j])中i的
时,你要求的是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)
这超出了范围,因为j取的是N数组元素的值,而不是索引。因此,j不是0,1,2,3,而是20,40,60,80。
因此,当你得到范围((0,N[j])中i的时,你要求的是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)
尝试:
而不是:
for i in range(0,N[j]):
因为N[j]
将访问列表中不存在的内容以外的内容,例如N[80]
。这就是为什么您会遇到索引器:列表索引超出范围的错误
要解决此问题,您需要在外部循环上应用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
0 -> 20
1 -> 40
2 -> 60
3 -> 80
如果您只需要数字:
for number in N:
print(number)
如果您希望索引和数字都以更为简洁的方式显示:
for index, number in enumerate(N):
print(index, "->", number)
哪些产出:
0 -> 20
1 -> 40
2 -> 60
3 -> 80
0 -> 20
1 -> 40
2 -> 60
3 -> 80
尝试:
而不是:
for i in range(0,N[j]):
因为N[j]
将访问列表中不存在的内容以外的内容,例如N[80]
。这就是为什么您会遇到索引器:列表索引超出范围的错误
要解决此问题,您需要在外部循环上应用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
0 -> 20
1 -> 40
2 -> 60
3 -> 80
如果您只需要数字:
for number in N:
print(number)
如果您希望索引和数字都以更为简洁的方式显示:
for index, number in enumerate(N):
print(index, "->", number)
哪些产出:
0 -> 20
1 -> 40
2 -> 60
3 -> 80
0 -> 20
1 -> 40
2 -> 60
3 -> 80
你可以使用枚举
N = [20,40,60,80]
for index, j in enumerate(N):
print(j)
for i in range(0,N[index]):
print(i)
你可以使用枚举
N = [20,40,60,80]
for index, j in enumerate(N):
print(j)
for i in range(0,N[index]):
print(i)
你的目标是什么?为什么它不起作用?你期望得到什么结果?N是模拟盒子中弹跳的球数。最终目标是计算不同球数在不同温度下施加的压力。但出于某种原因,我被困在这个看似简单的列表错误j
是N,而不是索引
,所以你得到N[80]
,但是N
没有那么多元素。-使用range(0,j)
@furas它告诉我“对于范围(0,N[j])中的i:”是一个索引器:列出索引超出范围你的目标是什么?为什么它不起作用?你期望得到什么结果?N是模拟框中反弹的球数。最终目标是计算不同温度下不同球数产生的压力。但出于某种原因,我被困在这个看似简单的列表错误上rj
是N
中的值,而不是index
所以你得到N[80]
,但是N
没有那么多元素。-使用range(0,j)
@furas它告诉我,“对于范围内的i(0,N[j]):”是一个索引器:列出范围外的索引很高兴它有帮助。如果你喜欢我的答案,请选择它,然后继续学习!)很高兴有帮助。如果你喜欢我的答案,请选择它,然后继续学习!:)