Python 在列表中添加两项时出现索引错误
所以,我有8个随机生成的数字,都是用Python 在列表中添加两项时出现索引错误,python,Python,所以,我有8个随机生成的数字,都是用ct[I]引用的。我想添加一个编号(ct[I])和ct[I+1]引用的编号。但是,这会产生列表索引超出范围的错误。怎么了 for i in range(totrange): tot1 = ct[i] + ct[i+1] totrange通常是8,但我希望有一点灵活性。如果totrange是8并且ct包含8个元素,最后一次ct[I+1]调用将尝试从ct获取第9个元素,导致列表索引超出范围错误 因此,totrange不应大于len(ct)-1如果totr
ct[I]
引用的。我想添加一个编号(ct[I]
)和ct[I+1]
引用的编号。但是,这会产生列表索引超出范围的错误。怎么了
for i in range(totrange):
tot1 = ct[i] + ct[i+1]
totrange
通常是8,但我希望有一点灵活性。如果totrange
是8并且ct
包含8个元素,最后一次ct[I+1]
调用将尝试从ct
获取第9个元素,导致列表索引超出范围错误
因此,
totrange
不应大于len(ct)-1
如果totrange
为8且ct
包含8个元素,则最后一次ct[i+1]
调用将尝试从ct
获取第9个元素,导致列表索引超出范围错误
因此,
totrange
不应大于len(ct)-1
您可能应该使用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
您可能应该使用
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
所以您要将
ct
中的最后一个元素添加到。。。什么?当i
为7
(如果totrange
通常为8
)时,ct[i+1]
将不受限制。因此您将ct
中的最后一个元素添加到。。。什么?当i
为7
(如果totrange
通常为8
)时,ct[i+1]
将不受限制。它不应该是“totrange
永远不应该大于len(ct)-1
”(以便i
永远不大于len(ct)-2
)?不应该len([0,1])
是2,这意味着(len([0,1])-1)+1
是2,这是超出范围的索引(len([0,1])-2)+1
为1,因此不会超出范围。您似乎缺少范围(totrange)
部分。如果totrange
是len(ct)-1
(即7),i
最大值将是6
,并且6+1
是一个有效的ct
索引。它不应该是“totrange
永远不应该大于len(ct)-1
”(以便i
永远不大于len(ct)-2
)?否len([0,1])
是2,这意味着(len([0,1])-1)+1
是2,这是超出范围的索引(len([0,1])-2)+1
为1,因此不会超出范围。您似乎缺少范围(totrange)
部分。如果totrange
是len(ct)-1
(即7),i
最大值将是6
,并且6+1
是有效的ct
索引。