Python中的栈

在python中,个人理解为栈可以用列表来代替

服从FILO:First In Last Out

其中入栈为(利用append函数)

stack = []
stack.append(<item>)

出栈为(利用pop函数)

stack.pop(-1) #stack.pop()也可 

服从FIFO:First In First Out

入栈为:

stack = []
stack.append(<item>)

出栈为:

stack.pop(0)


### Python的实现 在 Python 中可以通过多种方式实现这一抽象数据类型。最常用的方法之一是通过内置的数据结构——列表(list)。当使用列表来模拟的行为时,可以选择将列表的一端视为顶[^1]。 #### 列表作为的基础操作 对于基于列表构建的而言,在其上执行的主要操作有: - **压入元素** (`push`): 向中添加新项的操作称为压入。如果采用列表末端作为顶,则可调用 `append()` 函数完成此动作;反之亦然,若选择首部作顶则需借助于切片或其他技巧[^5]。 - **弹出元素** (`pop`): 移除并返回位于顶部的一项的过程叫做弹出。同样地,依据所选位置不同而有所区别:如果是尾部充当顶的话可以直接运用 `pop()` 方法;要是头部被指定为顶,则应考虑其他手段如 `del` 或者再次利用切片技术[^2]。 下面给出一段简单的例子展示如何创建一个基本功能完备的类,并演示了上述提到的关键函数的具体应用。 ```python class Stack: def __init__(self): self.items = [] def is_empty(self): return not bool(self.items) def push(self, item): self.items.append(item) # 将item加入到顶 def pop(self): if not self.is_empty(): return self.items.pop() # 删除并返回顶元素 raise IndexError("pop from empty stack") def peek(self): if not self.is_empty(): return self.items[-1] # 查看但不移除顶元素 raise IndexError("peek from empty stack") def size(self): return len(self.items) # 测试代码 if __name__ == "__main__": s = Stack() print(s.is_empty()) # 输出 True s.push(8.4) s.push('dog') print(s.peek()) # 输出 'dog' print(s.size()) # 输出 2 print(s.pop()) # 输出 'dog' print(s.pop()) # 输出 8.4 ``` 除了直接使用列表外,还可以借助标准库中的 `collections.deque` 来更高效地管理两端频繁变动的情况下的实例化过程[^4]。Deque 提供了一个双向开口的设计模式使得无论是哪一侧都可以快速进出元素而不必担心性能瓶颈问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值