在Python中实现peek()方法时处理空堆栈的正确方法



当使用Python实现堆栈时,在空堆栈上处理操作的常规方法是什么?

我有下面的堆栈。使用Python列表实现的简单堆栈类的peek方法:

def peek(self):
if not self.empty:
return self.items[-1]

如果堆栈为空,是返回None类型值还是引发错误更好?我不喜欢返回一个字符串来声明"堆栈是空的"。我所引用的所有数据结构书籍都是这样演示的。在生产代码中处理这个问题的常规方法是什么?

引发异常比返回任何东西更合适。顺便说一句,您可以考虑将list子类化,以涵盖典型的pushpoppeek:

class Stack(list):
push = list.append
peek = lambda self: self[-1]

最新更新