我在编写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
答案 0 :(得分:2)
列表中的索引从零开始。
因此,在more_stuff[7]
中,您将获得&#39; 这是最后一个。
您的代码在&#39; 之后尝试弹出另一个元素。
您需要解决的是:
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
答案 1 :(得分:0)
more_stuff
为空时len(more_stuff)=0
,pop()
仍然有用。
使用list
作为条件,如果列表为空,则bool值为False
more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana",
"Girl", "Boy"]
new_list = []
while more_stuff:
stuff = more_stuff.pop()
print ("Adding: ", stuff)
new_list.append(stuff)
可以测试任何对象的真值,以便在if或while中使用 条件或下面的布尔运算的操作数。下列 值被视为错误:
- 无
- 假
- 任何数字类型的零,例如,0,0.0,0j。
- 任何空序列,例如&#39;&#39;,(),[]。
- 任何空映射,例如{}。
- 用户定义类的实例,如果类定义 bool ()或 len ()方法,则该方法返回整数零或bool值False。
答案 2 :(得分:0)
您应该在more_stuff
列表中检查您的情况,因为这将耗尽项目:
while len(more_stuff) > 0:
...