Python 打印堆栈中的每个项目,而不删除它
是否可以在不从堆栈中移除项目的情况下窥视堆栈的其他部分?我想打印每一层,但Python 打印堆栈中的每个项目,而不删除它,python,Python,是否可以在不从堆栈中移除项目的情况下窥视堆栈的其他部分?我想打印每一层,但s.peek仅显示堆栈的顶层 s=Stack() #items in the stack s.push("Adam") s.push("Ben") s.push("Cassie") s.push("Deborah") s.push("Elvin") 它取决于堆栈的实现。 但是,Python列表非常适合用作堆栈,它们的append和pop方法: >>> stack = [] >>> st
s.peek
仅显示堆栈的顶层
s=Stack()
#items in the stack
s.push("Adam")
s.push("Ben")
s.push("Cassie")
s.push("Deborah")
s.push("Elvin")
它取决于
堆栈的实现。
但是,Python列表非常适合用作堆栈,它们的append
和pop
方法:
>>> stack = []
>>> stack.append(1)
>>> stack.append(2)
>>> stack.append(3)
>>> stack
[1, 2, 3]
>>> stack.pop()
3
>>> stack
[1, 2]
好的好处是,您仍然可以将其用作列表,尤其是在迭代中:
>>> for elt in stack:
... print(elt)
...
1
2
当然,您可能不喜欢append
名称,因为它不能真正反映堆栈的本质。
如果您想要一个干净的界面,可以扩展list
类,以便定义一个别名为append
的push
方法,一个只返回最后一个被推的元素的peek
方法,甚至可以重新定义迭代行为,以便从顶部自然迭代
class Stack(list):
def push(self, elt):
self.append(elt)
def peek(self):
return self[-1]
def __iter__(self):
return iter(reversed(self))
您是否编写了堆栈类?它来自何处?您还应该注意,peek
可以通过stack[-1]
或stack.push=stack.append来执行