0

所以,我有 8 个随机生成的数字,都用ct[i]. 我想添加一个数字 ( ct[i]) 和ct[i+1]. 但是,这会产生列表索引超出范围错误。怎么了?

for i in range(totrange):
    tot1 = ct[i] + ct[i+1]

totrange通常是 8,但我想有一点灵活性。

4

2 回答 2

2

您可能应该使用range(len(ct)-1)来处理这个问题,因为最后一个ii+1是一个大于最后一个索引的值ct

例子:

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
于 2012-11-17T18:27:56.657 回答
1

如果totrange是 8 并且ct包含 8 个元素,最后一次ct[i+1]调用将尝试从 中获取第 9 个元素ct,导致列表索引超出范围错误。

因此,totrange永远不应大于len(ct) - 1

于 2012-11-17T18:21:49.113 回答