让我们来详细讲解Python栈(后进先出)的使用方法。
什么是栈
栈(Stack)又称为堆栈,是一种数据结构,是一个只能在一端进行插入和删除操作的线性表。栈按照先进后出的原则存储数据,先进的数据被压入栈底,最后的数据在栈顶。
Python栈语法
在Python中,可以通过list列表来表示一个栈数据结构。入栈即是使用append()
方法,出栈则是使用pop()
方法。具体语法如下:
# 创建一个空栈
stack = []
# 将元素x入栈
stack.append(x)
# 返回栈顶元素并出栈
stack.pop()
栈的应用举例
栈是一种常用的数据结构,在编程中有很多的应用场景。下面介绍两个栈的应用场景。
圆括号匹配
在编写程序时,我们通常需要检查字符串中的圆括号是否匹配,即左右圆括号的数量是否相等、是否配对等问题。如果采用比较笨拙的方法,需要使用循环和计数器等操作,效率不高,也容易出错。使用栈就能简单、高效地解决这个问题。
下面是圆括号匹配的示例代码:
def is_matched(expr):
stack = []
left = ['(', '[', '{']
right = [')', ']', '}']
for c in expr:
if c in left: # 如果是左括号
stack.append(c) # 入栈
elif c in right: # 如果是右括号
if not stack: # 如果此时栈为空,说明前面没有与其匹配的左括号
return False
if right.index(c) != left.index(stack.pop()): # 判断左右括号是否匹配
return False
return not stack # 最后判断栈中是否还有未匹配的左括号
# 测试
expr = '(([]{}))'
print(is_matched(expr)) # True
expr = '(([{]}))'
print(is_matched(expr)) # False
浏览器历史记录
在浏览器中,当你点击浏览器的“前进”或“后退”按钮时,会让浏览器回到上一个或下一个访问过的网页。实现这个功能需要使用浏览器历史记录栈,每当你访问一个新的网页时,就将其压入栈中。当你点击“前进”或“后退”按钮时,就从历史记录栈中取出对应的网页地址。
下面是浏览器历史记录的示例代码:
class Browser:
def __init__(self):
self.history = [] # 初始化历史记录栈
self.current = None # 初始化当前网页为空
def go_to(self, url):
if self.current != url: # 如果当前网页与目标网页不同
self.history.append(self.current) # 将当前网页入栈
self.current = url # 更新当前网页
def back(self):
if self.history: # 如果历史记录栈不为空
self.current = self.history.pop() # 取出上一个历史记录
# 测试
browser = Browser()
print(browser.current) # None
browser.go_to('www.baidu.com')
browser.go_to('www.google.com')
print(browser.history) # ['www.baidu.com']
print(browser.current) # www.google.com
browser.back()
print(browser.history) # []
print(browser.current) # www.baidu.com
browser.back()
print(browser.history) # []
print(browser.current) # www.baidu.com
以上就是栈的使用介绍,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python 栈(后进先出) - Python技术站