我正在做这个HackerRank挑战,涉及实现队列和堆栈结构,并且遇到了关于Python中的 pop()函数的一些奇怪行为。
https://www.hackerrank.com/challenges/30-queues-stacks/problem
class Solution:
def __init__(self):
self.queue = []
self.stack = []
def pushCharacter(self, item):
self.stack.append(item)
def enqueueCharacter(self, item):
self.queue.insert(0, item)
def popCharacter(self):
return self.stack.pop()
def dequeueCharacter(self):
return self.queue.pop()
这是我的代码,但是如果我要从 popCharacter()和 dequeueCharacter()函数中删除返回调用,而只需 pop ()返回值,它不满足测试用例! pop()是否不显式返回数组的最后一个值?和 return pop()有什么区别?
答案 0 :(得分:2)
如果您这样做:
def popCharacter(self):
return self.stack.pop()
您正在返回pop()
返回的内容。但是,如果您这样做:
def popCharacter(self):
self.stack.pop()
您每次都返回None
。 Python不是Bash,所以没有魔术“返回任何最近返回的函数调用”功能。如果您要返回None
以外的其他内容,则实际上需要return
。