我对python有点生疏了。一位朋友正在做一些测试来准备他的考试,他给了这段代码:
stack = [3, 4, 5]
stack.append(6)
stack.pop()
他被问到屏幕会显示什么,正确的答案是7. 7。怎么样?我甚至编写了代码并运行它。它是6.它是一个新版本返回数字+ 1或什么?或者也许老师给出的答案是错误的。
答案 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()将删除并返回 列表中的最后一项。
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
这是因为您append
或end
的{{1}}或top
。
stack / list / array
命令遵循pop
规则,这意味着当您last in first out
pop
时,您将取出最后一项。{/ p>
因此,stack / list /array
是附加的最后一项,当您6
pop
时,返回将是最后一项,在此实例中为stack