algN/test/collections/deque.py

148 lines
2.9 KiB
Python
Raw Normal View History

2025-08-23 10:12:26 +08:00
"""
deque
双端队列可以快速的从另外一侧追加和推出对象,deque是一个双向链表
针对list连续的数据结构插入和删除进行优化它提供了两端都可以操作的序列
这表示在序列的前后你都可以执行添加或删除操作双向队列(deque)对象支持以下方法
"""
from collections import deque
"""
1append()
添加 x 到右端
"""
d = deque('ghi')
d.append('j')
print(d)
"""
2appendleft()
添加 x 到左端
"""
d.appendleft('f')
print(d)
"""
3clear()
移除所有元素使其长度为0.
"""
d = deque('ghi')
d.clear()
print(d)
"""
4copy()
创建一份浅拷贝
"""
d = deque('xiaoweuge')
y = d.copy()
print(y)
"""
5count()
计算 deque 中元素等于 x 的个数
"""
d = deque('xiaoweuge-shuai')
print(d.count('a'))
"""
6extend()
扩展deque的右侧通过添加iterable参数中的元素
"""
a = deque('abc')
b = deque('cd')
a.extend(b)
print(a)
#与append 的区别
a = deque('abc')
b = deque('cd')
a.append(b)
print(a)
"""
7extendleft()
扩展deque的左侧通过添加iterable参数中的元素注意左添加时在结果中iterable参数中的顺序将被反过来添加
"""
a = deque('abc')
b = deque('cd')
a.extendleft(b)
print(a)
"""
8index()
返回 x deque 中的位置在索引 start 之后索引 stop 之前 返回第一个匹配项如果未找到则引发 ValueError
"""
d = deque('xiaoweuge')
print(d.index('w'))
"""
9insert()
在位置 i 插入 x
如果插入会导致一个限长 deque 超出长度 maxlen 的话就引发一个 IndexError
"""
a = deque('abc')
a.insert(1, 'X')
print(a)
"""
10pop()
移去并且返回一个元素deque 最右侧的那一个 如果没有元素的话就引发一个 IndexError
"""
d = deque('abc')
print(d.pop())
"""
11popleft()
移去并且返回一个元素deque 最左侧的那一个 如果没有元素的话就引发 IndexError
"""
d = deque('abc')
print(d.popleft())
"""
12remove(value)
移除找到的第一个 value 如果没有的话就引发 ValueError
"""
a = deque('abca')
a.remove('a')
print(a)
"""
13reverse()
将deque逆序排列返回 None
"""
#逆序排列
d = deque('ghi') # 创建一个deque
print(list(reversed(d)))
"""
14rotate(n=1)
向右循环移动 n 如果 n 是负数就向左循环
如果deque不是空的向右循环移动一步就等价于 d.appendleft(d.pop()) 向左循环一步就等价于 d.append(d.popleft())
"""
# 向右边挤一挤
d = deque('ghijkl')
d.rotate(1)
print(d)
# 向左边挤一挤
d.rotate(-1)
print(d)
#看一个更明显的
x = deque('12345')
x.rotate()
print(x)
d = deque(['12',' av', 'cd'])
d.rotate(1)
print(d)
"""
15maxlen
Deque的最大尺寸如果没有限定的话就是 None
"""
d=deque(maxlen=10)
for i in range(20):
d.append(i)
print(d)