为什么我从“for i in ar”中的“ar[i]”得到一个IndexError(或TypeError,或者只是错误的结果)?
问题:为什么我从“for i in ar”中的“ar[i]”得到一个IndexError(或TypeError,或者只是错误的结果)? 我正在尝试使用for循环对列表的值求和。这是我的代码: def sumAnArray(ar): theSum = 0 for i in ar: theSum = theSum + ar[i] print(theSum) return theSum 我收到以下错误:
·
问题:为什么我从“for i in ar”中的“ar[i]”得到一个IndexError(或TypeError,或者只是错误的结果)?
我正在尝试使用for
循环对列表的值求和。这是我的代码:
def sumAnArray(ar):
theSum = 0
for i in ar:
theSum = theSum + ar[i]
print(theSum)
return theSum
我收到以下错误:
line 13, theSum = theSum + ar[i]
IndexError: list index out of range
我发现我正在尝试做的事情显然就像sum(ar)
一样简单。但是我想明白:为什么会得到这个IndexError
,应该怎么写for
循环呢?循环实际上是如何工作的?
有关 Python 如何实现for
循环和迭代器协议的技术概述,请参见例如带有可迭代的 Python for 循环如何工作?。
解答
当你像你一样在一个数组中循环时,你的 for 变量(在这个例子中是i
)是你数组的当前元素。
比如你的ar
是[1,5,10]
,那么每次迭代的i
值就是1
、5
、10
。而且因为你的数组长度是3,你可以使用的最大索引是2。所以当i = 5
你得到IndexError
。您应该将代码更改为以下内容:
for i in ar:
theSum = theSum + i
或者如果你想使用索引,你应该创建一个从 0 roarray length - 1
开始的范围。
for i in range(len(ar)):
theSum = theSum + ar[i]
更多推荐
已为社区贡献126483条内容
所有评论(0)