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
时候当我运行这个程序 为什么索引超出范围的错误了这个问题?指数超出范围的错误比较值
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]
尝试一下here!
你迭代的值,你应该做的
for i in range(len(a)):
i
和j
已经从你的列表元素。无需索引a
。
所以,改用s = i-j
你的问题是,a[i]
在第一次迭代,这是出界变得a[8]
i
和j
是值,你是他们误为索引。
i
和j
开始为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
'for i in a'遍历'a'中的值。因此,在第一次迭代'我== 8',和一个'[8]'正试图访问一个元件出该列表的范围的。 – khelwood
'for in'循环元素,而不是索引。 – Ryan
'因为我在a'中循环遍历每个元素。 '对于a中的j循环遍历再次中的元素。因此,对于你的代码,你想改变'S = A [1] -A [J]''到S = I-j'为'i'和'j'已经在您尝试值抢。 – Michael