tuoheng_algN/vodsdk/test/collections/deque.py

148 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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