【问题标题】:Why the pop() and del() not indexing problem? PLEASE FIX IT为什么 pop() 和 del() 没有索引问题?请修复它
【发布时间】:2019-10-06 06:20:54
【问题描述】:

示例列表:['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow']

预期输出:['Green', 'White', 'Black']

所以我尝试使用remove()pop()del() 但在索引方面有同样的问题。它将“红色”作为 [0] 索引,但跳过“绿色”并将“白色”作为 [1] 索引,其中“绿色”应该是 [1]

这是我写的

del List[0]

del List[4]

del List[5]

print(List)

我收到此错误:

del List[5]
IndexError: list assignment index out of range

但是当我写这篇文章时

del List[0]

del List[4]

del List[3]

print(List)

我得到了想要的结果。为什么?

【问题讨论】:

  • 请阅读您的问题,它的格式完全搞砸了。此外,如果您需要代码方面的帮助,您需要提取 minimal reproducible example 并将其作为问题的一部分提供。作为新用户,也可以使用tour 并阅读How to Ask
  • 这里有一个提示:在del List[0] 之前,列表中有多少元素? del List[0] 之后列表中有多少元素?在你做del List[0]之前'Pink'的位置是什么?你做了del List[0]之后'Pink'的位置是什么?
  • 如果它解决了您的问题,您应该接受答案。否则,您的问题仍在等待更多答案的队列中。另外,如果您发现任何有帮助的答案,您应该点赞。

标签: python list indexing


【解决方案1】:

每次删除一个元素时,新列表中每个元素的索引号都会发生变化。

List= ['Red', 'Green', 'White','Black', 'Pink', 'Yellow']

del List[0]

现在列表是 ['Green', 'White','Black', 'Pink', 'Yellow']

现在“绿色”是索引 0,“黄色”是索引 4。

del List[4]

现在“黄色”已被删除。

由于现在没有索引为 5 的元素,下面的代码会产生错误。

del List[5]

【讨论】:

  • 如果您知道要删除原始列表中的哪些索引,解决方法是将它们从最高到最低删除。那么当索引改变时,你关心的项目都不会移动。
【解决方案2】:

你从这个开始 List= ['Red', 'Green', 'White','Black', 'Pink', 'Yellow']

开启 ---> 删除列表[0] “红色”被删除

您的列表是 List=['Green','White','Black','Pink','Yellow'] 索引是 0 , 1 , 2 , 3 , 4

在---删除列表[4]

“黄色”被删除 现在列表 = ['Green','White','Black','Pink'] 索引 0 , 1 , 2 , 3

在---删除列表[5] 您正在尝试访问不存在的索引,因为现在列表的索引从 0 到 3

【讨论】:

    【解决方案3】:

    最初:

    List= ['Red', 'Green', 'White','Black', 'Pink', 'Yellow']
    

    删除列表[0]

    给予:

    List= ['Green', 'White','Black', 'Pink', 'Yellow']
    

    删除列表[4]

    给予:

    List= ['Green', 'White','Black', 'Pink']
    

    删除列表[5]

    抛出错误。因为列表的长度只是4

    【讨论】:

      【解决方案4】:

      让我们逐行查看您的代码:

      代码 1:

      lst= ['Red', 'Green', 'White','Black', 'Pink', 'Yellow']
      del lst[0] # lst = ['Green', 'White','Black', 'Pink', 'Yellow']
      del lst[4] # lst = ['Green', 'White','Black', 'Pink']
      del lst[5] # error as the max index remaining in the updated list is 3
      print(lst)
      

      代码 2

      lst= ['Red', 'Green', 'White','Black', 'Pink', 'Yellow']
      del lst[0] # lst = ['Green', 'White','Black', 'Pink', 'Yellow']
      del lst[4] # lst = ['Green', 'White','Black', 'Pink']
      del lst[3] # lst = ['Green', 'White','Black']
      print(lst)
      

      【讨论】:

        猜你喜欢
        • 2022-06-17
        • 1970-01-01
        • 1970-01-01
        • 2020-05-03
        • 2019-08-28
        • 1970-01-01
        • 2020-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多