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
执行以上代码,即可判断一个只包含 (
、)
、[
、]
、{
、}
的字符串是否完整,输出 True
或 False
。