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