所以,我有 8 个随机生成的数字,都用ct[i]. 我想添加一个数字 ( ct[i]) 和ct[i+1]. 但是,这会产生列表索引超出范围错误。怎么了?
for i in range(totrange):
tot1 = ct[i] + ct[i+1]
totrange通常是 8,但我想有一点灵活性。
所以,我有 8 个随机生成的数字,都用ct[i]. 我想添加一个数字 ( ct[i]) 和ct[i+1]. 但是,这会产生列表索引超出范围错误。怎么了?
for i in range(totrange):
tot1 = ct[i] + ct[i+1]
totrange通常是 8,但我想有一点灵活性。
您可能应该使用range(len(ct)-1)来处理这个问题,因为最后一个i,i+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
如果totrange是 8 并且ct包含 8 个元素,最后一次ct[i+1]调用将尝试从 中获取第 9 个元素ct,导致列表索引超出范围错误。
因此,totrange永远不应大于len(ct) - 1。