所以,我有 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
。