为什么我从“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
我收到以下错误:
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]
更多推荐
 
 


所有评论(0)