少说话多写代码之Python学习060——标准模块(双端队列)

本文详细介绍了双端队列的数据结构及其操作方法,包括如何在两端添加和删除元素,使用Python的collections模块中的deque实现双端队列,并展示了旋转元素等高级用法。

双端队列可以从队列的两端加入和删除元素。比如,在需要按照元素增加的顺序来移除元素时非常有用。
看下面的使用,

先产生一个双端队列。

from collections import deque
q = deque(range(5));
print(q)
输出
deque([0, 1, 2, 3, 4])
q.append(99)
q.appendleft(999)
print(q)
输出
deque([999, 0, 1, 2, 3, 4, 99])

前后增加了999和99

print(q.pop())
print(q.popleft())
输出
99
999

弹出前后的元素。

rotate用于旋转。将元素左移或者右移,使头尾相连。
q.rotate(3)
print(q)
输出
deque([2, 3, 4, 0, 1])

如上为左移三位。

q.rotate(-1)
print(q)
输出
deque([3, 4, 0, 1, 2])

这里是右移1位。


工程文件下载:https://download.youkuaiyun.com/download/yysyangyangyangshan/10846771

### Python双端队列 `deque` 的使用方法 #### 创建双端队列 为了创建一个双端队列,需导入 `collections` 模块中的 `deque` 类。通过调用此无参构造函数可初始化一个新的空双端队列实例[^2]。 ```python import collections d = collections.deque() ``` #### 添加元素到双端队列双端队列添加新项的操作非常灵活,既可以从右侧也可以从左侧执行插入动作。对于右端追加而言,利用 `.append()` 方法;而对于左端,则有专门设计的 `.appendleft()` 函数用于前置插入元素[^5]。 ```python # 向右侧添加单个元素 d.append('a') print(d) # 输出: deque(['a']) # 或者在左侧增加项目 d.appendleft('b') print(d) # 结果为: deque(['b', 'a']) ``` #### 移除元素 同样地,在处理移除节点时也提供了两种途径:`.pop()` 和 `.popleft()` 分别对应着弹出末端以及首端的数据条目[^3]。 ```python last_item = d.pop() # 删除并返回最后一个元素 ('a' 被移除) first_item = d.popleft() # 清理掉最早加入的那个成员 ('b' 不见了) print(last_item, first_item) # 屏幕上会显示 a b ``` #### 获取长度 要查询当前存储了个项目,可以直接应用内置函数 `len()` 来获取容器内含有的对象数目。 ```python length_of_deque = len(d) print(length_of_deque) # 如果之前清空过则输出0 ``` #### 扩展双端队列 除了逐个添加外,还可以一次性批量加载个值至指定位置(左边或右边)。这里介绍两个实用的方法——`.extend(iterable)` 和 `.extendleft(iterable)` ,它们允许传入任何可迭代的对象作为参数。 ```python new_elements_right = ['c','d'] d.extend(new_elements_right) # 把列表里的字符依次排列于现有序列之后 print(d) # 显示结果应为 deque(['c', 'd']) additional_items_left = ['e','f'] d.extendleft(additional_items_left[::-1]) # 注意这里的反转是为了保持原顺序 print(d) # 得到的结果将是 deque(['e', 'f', 'c', 'd']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值