Python 列表专题:如何使用列表实现栈结构
在 Python 中,可以使用列表(list
)来实现栈(Stack)结构。栈是一种数据结构,遵循“后进先出”(LIFO,Last In, First Out)的原则,这意味着最后放入栈的元素是第一个被取出的。Python 的列表提供了方便的方法来实现这一行为。
以下是如何使用 Python 列表来实现基本的栈操作,例如压栈(push)、弹栈(pop)和查看栈顶元素(peek):
class Stack:
def __init__(self):
"""初始化一个空栈"""
self.stack = []
def push(self, item):
"""压栈操作,将元素添加到栈的顶部"""
self.stack.append(item)
def pop(self):
"""弹栈操作,移除并返回栈顶元素。如果栈为空,则抛出异常"""
if not self.is_empty():
return self.stack.pop()
else:
raise IndexError("pop from an empty stack")
def peek(self):
"""查看栈顶元素,但不移除它。如果栈为空,返回 None"""
if not self.is_empty():
return self.stack[-1]
else:
return None
def is_empty(self):
"""检查栈是否为空"""
return len(self.stack) == 0
def size(self):
"""返回栈中元素的数量"""
return len(self.stack)
# 示例用法
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.peek()) # Output: 3
print(stack.pop()) # Output: 3
print(stack.pop()) # Output: 2
print(stack.pop()) # Output: 1
# 在尝试弹出一个空栈时,将抛出异常
# print(stack.pop()) # Raises: IndexError
上述代码实现了一个简单的栈类 Stack
,并封装了基本的栈操作,使得使用此类操作栈变得直观和简单。此外,Python 的列表动态调整大小的特性使得这个栈实现相当高效用于一般用途。