简单python for循环上的列表索引超出范围错误

简单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

有人能给我解释一下为什么这个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])中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是模拟框中反弹的球数。最终目标是计算不同温度下不同球数产生的压力。但出于某种原因,我被困在这个看似简单的列表错误上r
j
N
中的值,而不是
index
所以你得到
N[80]
,但是
N
没有那么多元素。-使用
range(0,j)
@furas它告诉我,“对于范围内的i(0,N[j]):”是一个索引器:列出范围外的索引很高兴它有帮助。如果你喜欢我的答案,请选择它,然后继续学习!)很高兴有帮助。如果你喜欢我的答案,请选择它,然后继续学习!:)