现在位置: 首页 > Python 3 教程 > 正文

使用 Python 实现一个简单的栈(Stack)类

Document 对象参考手册 Python3 实例

栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。我们可以使用 Python 的列表来实现一个简单的栈类。这个类将包含以下几个基本操作:

  1. push(item):将元素 item 压入栈顶。
  2. pop():移除并返回栈顶的元素。
  3. peek():返回栈顶的元素但不移除它。
  4. is_empty():检查栈是否为空。
  5. size():返回栈中元素的数量。

实例

class Stack:
    def __init__(self):
        self.items = []

    def is_empty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if self.is_empty():
            raise IndexError("pop from empty stack")
        return self.items.pop()

    def peek(self):
        if self.is_empty():
            raise IndexError("peek from empty stack")
        return self.items[-1]

    def size(self):
        return len(self.items)

代码解析:

  1. __init__(self):初始化一个空列表 items 来存储栈中的元素。
  2. is_empty(self):检查栈是否为空,如果 items 列表为空则返回 True,否则返回 False
  3. push(self, item):将元素 item 添加到 items 列表的末尾,即压入栈顶。
  4. pop(self):移除并返回 items 列表的最后一个元素,即栈顶元素。如果栈为空,则抛出 IndexError 异常。
  5. peek(self):返回 items 列表的最后一个元素,即栈顶元素,但不移除它。如果栈为空,则抛出 IndexError 异常。
  6. size(self):返回 items 列表的长度,即栈中元素的数量。

输出结果:

实例

# 示例使用
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.peek())  # 输出: 3
print(stack.pop())   # 输出: 3
print(stack.size())  # 输出: 2
print(stack.is_empty())  # 输出: False
stack.pop()
stack.pop()
print(stack.is_empty())  # 输出: True

在这个示例中,我们首先创建了一个栈对象 stack,然后依次将元素 123 压入栈中。接着我们查看了栈顶元素(3),并移除了它。最后我们检查了栈的大小和是否为空。

Document 对象参考手册 Python3 实例