当使用Python实现堆栈时,在空堆栈上处理操作的常规方法是什么?
我有下面的堆栈。使用Python列表实现的简单堆栈类的peek方法:
def peek(self):
if not self.empty:
return self.items[-1]
如果堆栈为空,是返回None类型值还是引发错误更好?我不喜欢返回一个字符串来声明"堆栈是空的"。我所引用的所有数据结构书籍都是这样演示的。在生产代码中处理这个问题的常规方法是什么?
引发异常比返回任何东西更合适。顺便说一句,您可以考虑将list
子类化,以涵盖典型的push
、pop
和peek
:
class Stack(list):
push = list.append
peek = lambda self: self[-1]