Python笔记|列表实现堆栈和队列

1.用列表实现堆栈

使用列表方法实现堆栈非常容易,最后插入的最先取出(“后进先出”)。把元素添加到堆栈的顶端,使用 append() 。从堆栈顶部取出元素,使用 pop() ,不用指定索引。

>>>stack = [3, 4, 5]
>>>stack.append(6)
>>>stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>>stack.pop()
7
>>>stack
[3, 4, 5, 6]
>>>stack.pop()
6
>>>stack.pop()
5
>>>stack
[3, 4]

2.用列表实现队列

列表也可以用作队列,“先进先出”原则(最先加入的元素,最先取出)。但列表作为队列的效率很低。因为,在列表末尾添加和删除元素非常快,但在列表开头插入或移除元素却很慢(所有其他元素都必须移动一位)。
实现队列最好用的是 collections.deque,可以快速从两端添加或删除元素。

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")          # 添加  
>>> queue.append("Graham")        
>>> queue.popleft()                # 移除
'Eric'
>>> queue.popleft()                
'John'
>>> queue                          
deque(['Michael', 'Terry', 'Graham'])

双向队列(deque)对象支持以下方法:

  • append(x) 添加 x 到右端。
  • appendleft(x) 添加 x 到左端。
  • clear() 移除所有元素,使其长度为0。
  • extend(iterable) < 3.2 新版功能 > 扩展deque的右侧,通过添加iterable参数中的元素。
  • extendleft(iterable) 扩展deque的左侧,通过添加iterable参数中的元素。注意,左添加时,在结果中iterable参数中的顺序将被反过来添加。
  • count(x) < 3.5 新版功能 > 计算 deque 中元素等于 x 的个数。
  • insert(i, x) 在位置 i 插入 x 。如果插入会导致一个限长 deque 超出长度 maxlen 的话,就引发一个 IndexError。
  • pop() 移去并且返回一个元素,deque 最右侧的那一个。 如果没有元素的话,就引发一个 IndexError。
  • popleft() 移去并且返回一个元素,deque 最左侧的那一个。 如果没有元素的话,就引发 IndexError。
  • remove(value) 移除找到的第一个 value。 如果没有的话就引发 ValueError。
  • reverse() 将deque逆序排列。返回 None 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Turbo正则

如果对您有用请我喝杯咖啡吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值