Python程序实现栈

Python程序实现栈

栈是一种先进后出(Last In First Out)的数据结构,可以对数据进行压入(push)和弹出(pop)操作。在Python中,我们可以用list或者deque(双端队列)来实现栈的功能。

更多Python相关文章,请阅读:Python 教程

用list实现栈

基于list实现栈的方式比较简单,我们可以用append()方法向栈中添加元素,使用pop()方法从栈中弹出元素。

示例代码:

stack = []  # 创建一个空list作为栈

stack.append(1)
stack.append(2)
stack.append(3)

print('栈中的元素:', stack)

print('弹出元素:', stack.pop())
print('弹出元素:', stack.pop())

print('栈中的元素:', stack)

输出结果:

栈中的元素: [1, 2, 3]  
弹出元素: 3  
弹出元素: 2  
栈中的元素: [1]  

用deque实现栈

如果我们希望在实现栈的功能时,不仅支持从栈顶进行操作,也可以从栈底进行操作,那么使用deque会更加方便。deque是Python标准库中collections模块的一个数据类型,支持从头部和尾部的插入和删除操作。

示例代码:

from collections import deque

stack = deque()

stack.append(1)
stack.append(2)
stack.append(3)

print('栈中的元素:', stack)

print('弹出元素:', stack.pop())
print('弹出元素:', stack.pop())

print('栈中的元素:', stack)

输出结果:

栈中的元素: deque([1, 2, 3])  
弹出元素: 3  
弹出元素: 2  
栈中的元素: deque([1])  

性能比较

虽然list本身也是支持pop()和append()方法的,但是在实际中使用时,使用deque作为栈的数据结构,总的效率会更高。

我们可以使用Python的timeit模块,来进行比较deque和list的运行时间。

示例代码:

from collections import deque
import timeit

stack1 = deque()
stack2 = []

for i in range(10000):
    stack1.append(i)
    stack2.append(i)

t1 = timeit.timeit("stack1.pop()", setup="from __main__ import stack1", number=10000)
t2 = timeit.timeit("stack2.pop()", setup="from __main__ import stack2", number=10000)

print("deque用时:", t1)
print("list用时:", t2)

输出结果:

deque用时: 0.0005130720000304948  
list用时: 0.0029871830000440887  

结论

在实现栈的过程中,我们可以使用list或者deque来实现,而deque相对于list的效率更高。通过本文的示例,大家可以更好的理解栈的实现过程,也学会了如何使用Python中的deque来实现栈的功能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程