在这个使用 Python 列表的 Stack 的简单实现中。我有一个小方法来检查堆栈是否为空(列表为空)。我将此方法用作 pop 方法的检查条件。 pop 方法应该在尝试弹出空堆栈时引发异常。出于某种原因,这似乎不起作用。我在这里错过了什么吗?请帮忙!
__author__ = '@arun'
# Stack simple implementation using Python list
class Stack(object):
def __init__(self):
self.items = []
def push(self, value):
self.items.append(value)
def is_empty(self):
return not bool(self.items)
def pop(self):
print self.is_empty()
if self.is_empty: # if not stack is empty
return self.items.pop()
else:
raise Exception("Stack Empty!")
def peek(self):
return self.items[-1]
def get_size(self):
return len(self.items)
if __name__ == '__main__':
stack = Stack()
print stack.get_size()
stack.push(23)
stack.push(3)
print stack.get_size()
print stack.pop()
print stack.pop()
print stack.get_size()
#print stack.pop()
输出:
0
2
False
3
False
23
0
为什么 pop() 方法在 is_empty() 返回 False 时弹出元素?!
请您参考如下方法:
if self.is_empty:
将始终评估为 True,因为它是 Truthy value .你需要像这样调用函数
if self.is_empty():
还有一个建议:您可能希望仅在is_empty() 为False 时弹出 值,像这样
if not self.is_empty():
