Python .pop()不起作用

时间:2017-09-14 20:18:02

标签: python

我对python有点生疏了。一位朋友正在做一些测试来准备他的考试,他给了这段代码:

stack = [3, 4, 5]

stack.append(6)

stack.pop() 

他被问到屏幕会显示什么,正确的答案是7. 7。怎么样?我甚至编写了代码并运行它。它是6.它是一个新版本返回数字+ 1或什么?或者也许老师给出的答案是错误的。

4 个答案:

答案 0 :(得分:5)

[3,4,5,6].pop()

Python 2和Python 3都不返回7(都返回6) 最明显的答案是,当他们向你发送这个例子时,老师或你的朋​​友只是一个错字。

[3,4,5,6].pop()

相当于

[3,4,5,6].pop(-1)

两者都返回堆栈的最后一个(= top)元素。

使用[3,4,5].append(6)
您将6附加到堆栈→将6推到堆栈顶部。

因此,如果您执行

stack = [3,4,5]
stack.append(6)
stack.pop()       # equ. to stack.pop(-1)

结果为6,不能为7

有关如何以及为何将python中的列表用作各种数据结构(堆栈,队列等)的更详细说明,请考虑查看文档:
https://docs.python.org/2/tutorial/datastructures.html

答案 1 :(得分:1)

老师给出的答案是错误的。

  

list.pop([i]) - 删除列表中给定位置的项目,然后   把它返还。如果未指定索引,则a.pop()将删除并返回   列表中的最后一项。

查看the documentation of pop

stack = [3, 4, 5]
stack.append(6)
print(stack.pop())
print(stack)

输出:

6
[3, 4, 5]

答案 2 :(得分:1)

我在这里使用CMD和python 3.6.2运行你的代码,这是输出:

>>> stack = [3,4,5]
>>> stack.append(6)
>>> stack.pop()
6
>>>

当然,正确的答案是6

答案 3 :(得分:0)

这一定是一个技巧问题

stack = [3, 4, 5]

stack.append(6)

stack.pop()

返回

6

这是因为您appendend的{​​{1}}或top

stack / list / array命令遵循pop规则,这意味着当您last in first out pop时,您将取出最后一项。{/ p>

因此,stack / list /array是附加的最后一项,当您6 pop时,返回将是最后一项,在此实例中为stack