【问题标题】:IndexError: list index out of range in for loopIndexError:for循环中的列表索引超出范围
【发布时间】:2018-12-14 22:53:43
【问题描述】:

我在 python 中写了一个代码,但我遇到了这个错误:

if a1[i] == a1[i+1] == a1[i+2]:
IndexError: list index out of range

我写了一个 if 条件,如果我的列表长度小于 3,则打破 for,但它不起作用。

我的代码:

numb = int(input())
a1 = []
a2 = []
a = 0
a1 = [int(i) for i in input().split()]
for i in range(0, numb):
    a2.append("empty")


for i in range(0, len(a1)-2):
    if len(a1) < 3:
        break
    else:
        if a1[i] == a1[i+1] == a1[i+2]:
            a = a + 1
            a2[i] = a
            a2[i+1] = a
            a2[i+2] = a
            a1.remove(a1[i+2])
            a1.remove(a1[i+1])
            a1.remove(a1[i])

为什么我遇到这个错误? 是我的 if 条件不起作用吗?

在 Addision 中,我很抱歉在我的问题中写错了。

【问题讨论】:

  • [...] 如果我的列表长度小于 3 则只需使用 len() 函数。见stackoverflow.com/questions/1712227/…
  • 我试试这个,但我遇到了同样的错误
  • 您收到IndexError 的原因是您尝试使用列表中不可用的索引。你应该找出你在哪里做这样的事情并纠正它。
  • range(0, len(a1)-2) 只评估一次,但您将列表的len 更改为removeHow does a for loop evaluate its argument
  • @JohnnyMopp 谢谢,我的问题解决了。

标签: python list loops for-loop indexing


【解决方案1】:

您的循环从0 转到len(a1)-2,而您应该只转到len(a1)-3

当您使用i 时,让i0 变为len(a1)-1
当您使用ii+1 时,让i0 变为len(a1)-2
当您使用ii+1i+2 时,让i0 变为len(a1)-3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多