比较时列表超出范围



我想看看列表中两个对象的和是否等于一个数字。我写了这段代码,当我尝试打印对象的索引时,它给了我一个超出范围的错误列表。当我打印对象时,我没有看到错误-

ls = [2,8,12,7]
for x in ls:
for y in ls[1::]:
if x + y == 9:
print(ls[x],ls[y]) # gives error
print(x,y) # works fine

我可以通过使用enumerate函数来解决这个问题,但我想知道为什么上面的代码会出错。

工作代码-

ls = [2,8,12,7]
for inx,x in enumerate(ls):
for iny,y in enumerate(ls[1::]):
if x + y == 9:
print(inx,iny)

当您使用for循环(例如for x in ls(迭代列表时,您迭代的是列表的,而不是索引。因此,x将按顺序为2、8、12、7。由于您的列表只有4个元素,因此在索引8处没有元素,这导致在尝试访问ls[x]时出现索引超出范围的异常。

相关内容

  • 没有找到相关文章

最新更新