【问题标题】:Cannot use del LIST[index] - Python 3.4.2不能使用 del LIST[index] - Python 3.4.2
【发布时间】:2015-01-21 09:16:49
【问题描述】:

我有这个简单的代码

all_rooms 有 20 多个元素

del all_rooms[0]
del all_rooms[1]
for everyRoom in all_rooms:
    print(everyRoom)

我收到此错误

del all_rooms[0]
IndexError: list assignment index out of range

我只想从列表中删除 0th 和 1st 索引。

看到here on SO的回复

如果我注释掉del 语句,我可以轻松打印我的列表元素

【问题讨论】:

  • 您能否在问题中包含all_rooms 列表的内容。
  • del 也应该可以工作:)
  • 请注意,您可能想在del all_rooms[0]之前添加del all_rooms[1](因为删除第0个后,第1个将变为第0个)
  • @fredtantini 但all_rooms 内容超过20个元素。所以del all_rooms[0] 那么del all_rooms[1] 不应该给IndexError ryt 吗?
  • I just want to remove the 0th and 1st index from list. 你的愿望和你接受的答案无关紧要。所以最好把你的问题说清楚。

标签: python list python-3.x


【解决方案1】:

不使用del - 使用切片并将all_rooms 的内容替换为第三个元素。

all_rooms[:] = all_rooms[2:]

【讨论】:

  • print("爱你,先生:P")
  • 对于更大的列表all_rooms[:] = all_rooms[2:] 将花费太多时间。
  • Instead of using del 为什么?为什么而不是?为什么不能使用del?这似乎不是我的答案
  • 你能评论一下为什么all_rooms[:] = all_rooms[2:]而不是all_rooms = all_rooms[2:]吗?
  • 这比使用del(它是容错的)要好,但它并没有真正回答问题,即为什么del all_rooms[0](显然)失败了?
【解决方案2】:

尝试使用:

for everyRoom in all_rooms[2:]:
    print(everyRoom)

这被称为列表切片,你给出一个开始和结束位置,留下结束位置blank我们可以说python自动将len(list)作为结束位置,所以使用all_rooms[2:len(everyRoom)]也会产生结果相同。

【讨论】:

  • “产生相同的结果” - 除非 OP 实际上确实想要从 all_rooms 中删除项目 - 在这种情况下,这个答案是不一样的。
  • 谢谢,我更喜欢你的方法,而不是删除,我希望你的方法能产生我想要的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2016-04-23
  • 2014-06-13
  • 1970-01-01
  • 2011-08-02
  • 2015-11-22
相关资源
最近更新 更多