在Python3中迭代数组
我已经有一段时间没有编写代码了,也没有尝试回到Python。我正试图编写一个简单的程序,通过将每个数组元素的值相加到一个和来对数组求和。这就是我所拥有的:在Python3中迭代数组,python,arrays,python-3.x,sum,Python,Arrays,Python 3.x,Sum,我已经有一段时间没有编写代码了,也没有尝试回到Python。我正试图编写一个简单的程序,通过将每个数组元素的值相加到一个和来对数组求和。这就是我所拥有的: def sumAnArray(ar): theSum = 0 for i in ar: theSum = theSum + ar[i] print(theSum) return theSum 我得到以下错误: line 13, theSum = theSum + ar[i] IndexErro
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)
但很明显,我并没有正确地遍历数组,我想这是我需要为其他目的正确学习的东西。谢谢 当您像这样在数组中循环时,for变量(在本例中为
i
)是数组的当前元素
例如,如果您的ar
为[1,5,10]
,则每次迭代中的i
值为1
、5
和10
。
因为数组长度是3,所以可以使用的最大索引是2。因此,当i=5
时,您将得到索引器。
您应该将代码更改为以下内容:
for i in ar:
theSum = theSum + i
或者,如果要使用索引,则应创建一个范围,范围为0 ro数组长度-1
for i in range(len(ar)):
theSum = theSum + ar[i]
for循环迭代数组的元素,而不是其索引。
假设您有一个列表ar=[2,4,6]:
当您在ar:
中对i使用进行迭代时,i的值将是2、4和6。因此,当您尝试访问第一个值的ar[i]
时,它可能会起作用(因为列表的最后一个位置是2,a[2]等于6),但对于后一个值则不起作用,因为a[4]不存在
如果您打算使用索引,请尝试使用作为索引,枚举(ar)中的值:
,然后theSum=theSum+ar[index]
应该可以正常工作。您可以使用
nditer
在此,我计算了逻辑回归中正系数和负系数的数量:
b=sentiment_model.coef_
pos_coef=0
neg_coef=0
for i in np.nditer(b):
if i>0:
pos_coef=pos_coef+1
else:
neg_coef=neg_coef+1
print("no. of positive coefficients is : {}".format(pos_coef))
print("no. of negative coefficients is : {}".format(neg_coef))
输出:
no. of positive coefficients is : 85035
no. of negative coefficients is : 36199
使用此方法迭代列表或数组时:
ar = [10, 11, 12]
for i in ar:
theSum = theSum + ar[i]
实际上,您是在i
变量中按顺序获取列表或数组的值。
如果在for循环的中打印变量i
。您将获得以下输出:
10
11
12
然而,在代码中,您将i
变量与数组的索引值混淆。因此,在第一次迭代中执行ar[i]
意味着ar[10]
。这当然是索引超出范围抛出indexer
编辑
为了更好地理解Python中迭代数组或列表的不同方法,您可以阅读i
是您在数组中循环的项的值。。。因此,如果您有3个项目[10,11,12]
,那么您正在尝试访问ar[10]
的第一次迭代,但这不起作用。。。您可以使用内置的sum
,例如:sum(ar)
?@JonClements您会注意到我在原始问题中提到sum(ar)是一种更简单的方法。我想问的是如何正确地迭代数组元素。(对不起,不知怎么扫了这一点)您可以将循环更改为theSum+=ar
…如果您想使用每个元素的索引,而不是列表中每个元素的值,您可以使用