python列表天然支持栈操作,用append()入栈、pop()出栈,满足后进先出(lifo)特性;需避免pop(0)等破坏效率的操作,典型应用包括括号匹配、dfs和逆序输出。

Python列表天然支持栈操作,用 append() 入栈、pop() 出栈,无需额外导入模块,简单直接。
栈的基本行为:后进先出(LIFO)
栈的核心规则是“最后加入的元素最先被取出”。列表的 append() 总是把元素加到末尾,pop() 默认移除并返回末尾元素——二者配合,恰好满足 LIFO 特性。
-
stack = []初始化空栈 -
stack.append(1)→[1] -
stack.append(2)→[1, 2] -
stack.pop()→ 返回2,栈变为[1] -
stack.pop()→ 返回1,栈变为空[]
pop() 的默认行为与安全使用
pop() 不带参数时等价于 pop(-1),即操作最后一个元素。但若对空列表调用 pop(),会触发 IndexError。
- 建议在出栈前检查:
if stack: item = stack.pop() - 或用异常处理:
try: x = stack.pop() except IndexError: print("栈已空") - 避免写
stack.pop(0)——这会从开头弹出,时间复杂度 O(n),破坏栈效率
典型应用场景示例
括号匹配、函数调用跟踪、撤销操作(undo)等都依赖栈结构。
立即学习“Python免费学习笔记(深入)”;
-
括号校验:遇到
'('就append,遇到')'就pop,最后栈应为空 -
深度优先遍历(DFS):用列表模拟递归栈,
append待访问节点,pop当前处理节点 -
逆序输出:依次
append所有元素,再连续pop,自然得到反序结果
不复杂但容易忽略:只要只用末尾增删,列表就是高效栈;混用 insert()、pop(0) 或切片赋值,就不再是栈语义了。










