索引错误:从空列表中弹出

新手上路,请多包涵

我在 python 编码方面相当陌生……试图了解 .pop() 函数以及如何从列表中弹出项目并附加到新列表。有人可以帮我处理这段代码,看看为什么它告诉我我正在从一个空列表中弹出吗?

 more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana", "Girl", "Boy"]
new_list = []

while len(new_list) <= 8:
    stuff = more_stuff.pop()
    print "Adding: ", stuff
    new_list.append(stuff)

print new_list

运行代码时我得到了这个结果:

 Traceback (most recent call last):
  File "testpop.py", line 5, in <module>
    stuff = more_stuff.pop()
IndexError: pop from empty list

原文由 Fahad Bubshait 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 653
1 个回答

列表中的索引从零开始。

所以,在 more_stuff[7] 你会得到最后一个 “男孩”

您的代码试图在 “男孩” 之后弹出另一个不存在的元素。

您需要修复的是:

 while len(new_list) <= 7:

编辑:

您也可以使用列表理解来做到这一点:

 more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana",
"Girl", "Boy"]

new_list = [more_stuff.pop() for __ in xrange(len(more_stuff))]

print new_list

原文由 omri_saadon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题