所以,我有8个随机生成的数字,全都用ct[i]
引用。我想添加一个数字(ct[i]
)和ct[i+1]
引用的数字。但是,这会产生列表索引超出范围错误。怎么了?
for i in range(totrange):
tot1 = ct[i] + ct[i+1]
totrange
通常为8,但我希望有一点灵活性。
答案 0 :(得分:2)
您应该使用range(len(ct)-1)
来处理此问题,因为最后i
,i+1
是一个大于ct
的最后一个索引的值。< / p>
的示例:
In [30]: ct=range(5) #ct =[0,1,2,3,4]
In [31]: for i in range(len(ct)-1):
print(ct[i]+ct[i+1])
....:
1
3
5
7
或更好地使用基于zip()
的解决方案,根本不需要使用索引:
In [32]: for x,y in zip(ct,ct[1:]):
print (x+y)
....:
1
3
5
7
答案 1 :(得分:1)
如果totrange
为8且ct
包含8个元素,则最后ct[i+1]
次调用将尝试从ct
获取第9个元素,导致列表索引超出范围错误。
因此,totrange
绝不应大于len(ct) - 1
。