繁体   English   中英

比较值时索引超出范围错误

[英]Index out of range error when comparing values

a=[8,24,3,20,1,17]
r=[]
for i in a:
    for j in a:
        s=a[i]-a[j]
        r.append(s)
print r

当我运行该程序时,为什么此问题的索引超出范围错误?

使用s = i - j代替s = a[i] - a[j]

a=[8,24,3,20,1,17]
r=[]
for i in a:
    for j in a:
        s = i - j
        r.append(s)
print r

输出:

[0, -16, 5, -12, 7, -9, 16, 0, 21, 4, 23, 7, -5, -21, 0, -17, 2, -14, 12, -4, 17, 0, 19, 3, -7, -23, -2, -19, 0, -16, 9, -7, 14, -3, 16, 0]

在这里尝试

您正在迭代值,应该这样做

for i in range(len(a)):

ij已经是您列表中的元素。 无需索引a

因此,改为使用s = ij


您的问题是a[i]在第一次迭代时变成a[8] ,这超出了范围

ij ,您误将它们用作索引

ij从8开始(列表的第一个元素)。 自然, a[8]给您一个错误,因为列表的大小小于此大小。

也许是因为当你做

`for i in list:`

i不是索引,而是实际数字。

尝试做

a=[8,24,3,20,1,17]
r=[]
for i, x in enumerate(a):
    for j, y in enumerate(a):
        s = a[i]-a[j]
        r.append(s)
print r

要么

a=[8,24,3,20,1,17]
r=[]
for i in range(len(a)):
    for j in range(len(a)):
        s = a[i]-a[j]
        r.append(s)
print r

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM