【问题标题】:why -1 is necessary to index error in python list index out of range for loop为什么需要-1来索引python list index out of range for loop中的错误
【发布时间】:2020-06-13 20:03:38
【问题描述】:
index error: list out of range
lst = [1,2,3,4]
for i in range(len(lst)):
    if lst[i] == lst[i+1]:
         print(True)

如果我们使用len(lst) - 1 它可以工作 为什么?

【问题讨论】:

  • 请以更易于理解的方式重写您的问题。您不能以“错误”开始帖子,请在此之前提供上下文等。提前致谢。

标签: python python-3.x for-loop


【解决方案1】:

len(lst) 为 4,因此您的 range 对象将超过 0、1、2 和 3。当 i 为 3 时,lst[i+1] 将为 lst[4]。 4 不是lst 的有效索引。

但是,如果您执行range(len(lst)-1),您将只运行 0、1 和 2。因此,当 i 为 2 时,您将比较数组的最后两个元素,即, lst[2]lst[3]

【讨论】:

    【解决方案2】:

    这是因为 python 列表的索引从 0n-1 其中n 是列表中存在的元素数。

    1. range(len(lst)) 将从 0 循环到 len(lst)-1。但是您也在循环内使用lst[i+1],这会使您的数组在最后一次迭代中访问超出范围的索引,从而导致错误。例如。如果您的列表长度为 4,那么在最后一次迭代中,i 将为 3,并且您正在访问 lst[i+1],即lst[4],它超出了列表的范围。

    2. 1234563从不访问超出范围的索引。因此,这是在您的情况下迭代循环的正确方法。

    【讨论】:

      【解决方案3】:

      假设这是您的列表:

      [1, 2, 3, 4]
      

      现在当你这样做时:

      for i in range(len(lst))
      

      该范围将为您提供i 的值:

      0, 1, 2, 3
      

      在这个语句中,当i3时,你也尝试访问不存在的索引4

      if lst[i] == lst[i+1]:
      

      因此,例外。

      【讨论】:

        猜你喜欢
        • 2015-02-11
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多