详解Python 栈(后进先出)

  • Post category:Python

Python 栈(Stack)是一种后进先出(Last In First Out)的数据结构,它遵循着一种简单直白的原则:后进入的元素最先出栈。

在 Python 中,可以使用 List 来实现栈结构。下面是 Python 栈的使用方法攻略,包括创建栈、入栈、出栈、栈顶元素等操作。

创建栈

在 Python 中,可以直接通过 List 来创建栈,使用 List 中提供的方法来模拟栈的操作。

stack = []

初始化一个空的 List,即可实现创建栈的功能。

入栈

在栈结构中,我们可以通过 append() 方法向栈顶加入一个元素,即入栈。

stack = []
stack.append(1)
stack.append(2)
stack.append(3)

print(stack)  # [1, 2, 3]

执行以上代码,即可向栈顶加入 3 个元素,输出 [1, 2, 3],表示栈的状态为 1 -> 2 -> 3

出栈

在栈结构中,我们可以使用 pop() 方法从栈顶删除一个元素,即出栈。

stack = [1, 2, 3]
stack.pop()

print(stack)  # [1, 2]

执行以上代码,即可从栈顶删除一个元素,输出 [1, 2],表示栈的状态为 1 -> 2

栈顶元素

在访问栈顶元素时,只需要使用 List 中的索引来获取即可,索引为 -1 表示栈顶元素。

stack = [1, 2, 3]
top = stack[-1]

print(top)  # 3

执行以上代码,即可获取栈顶元素,输出 3

示例

示例一:使用栈对字符串进行反转

stack = []
string = 'abcdefg'

for char in string:
    stack.append(char)

reversed_string = ''
while stack:
    reversed_string += stack.pop()

print(reversed_string)  # gfedcba

执行以上代码,即可对字符串 abcdefg 进行反转,输出 gfedcba

示例二:判断括号是否完整(使用栈)

def is_balanced(s):
    stack = []
    for char in s:
        if char in ('(', '[', '{'):
            stack.append(char)
        else:
            if not stack:
                return False
            if (char == ')' and stack[-1] != '(') or \
               (char == ']' and stack[-1] != '[') or \
               (char == '}' and stack[-1] != '{'):
                return False
            stack.pop()
    return not bool(stack)

print(is_balanced('()'))  # True
print(is_balanced('()[]{}'))  # True
print(is_balanced('(]'))  # False

执行以上代码,即可判断一个只包含 ()[]{} 的字符串是否完整,输出 TrueFalse