deque,是双向队列,是一种高性能的数据结构之一.它的操作类似于列表list,但比list拥有更低的时间复杂度和空间复杂度。
代码语言:javascript复制from collections import deque
deque1 = deque([1, 2, 3, 4])
print(deque1)
结果打印:
代码语言:javascript复制deque([1, 2, 3, 4])
1、 append方法
list的append方法一样,都是从末尾(队尾)添加元素
代码语言:javascript复制deque1.append(5)
print(deque1)
结果:
代码语言:javascript复制deque([1, 2, 3, 4, 5])
2 appendleft方法
该方法是从队首插入元素,虽然list的insert(0, obj)也能实现该效果,但性能不如该方法
代码语言:javascript复制deque1.appendleft(6)
print(deque1)
代码语言:javascript复制结果输出:
deque([6, 1, 2, 3, 4, 5])
3 clear方法
该方法和list的clear方法一样,都是清空里面的所有元素。
代码语言:javascript复制deque1.clear()
print(deque1)
结果;
代码语言:javascript复制deque([])
4.count方法
该方法和list的count方法一样,返回队列中包含value的个数
代码语言:javascript复制print(deque1.count(4))
结果;
代码语言:javascript复制0
5 extend方法
代码语言:javascript复制deque1.extend({1:3})
print(deque1)
结果:
代码语言:javascript复制deque([1])
6 extendleft方法
作用和extend一样,只不过该方法是在队首开始扩展,而extend是在队尾进行扩展
代码语言:javascript复制deque1.extendleft([5])
print(deque1)
结果:
代码语言:javascript复制deque([5])
7 pop方法
该方法和list的pop方法一样,用于删除末尾的元素
代码语言:javascript复制from collections import deque
deque1 = deque([1, 2, 3, 4])
deque1.pop()
print(deque1)
结果;
代码语言:javascript复制deque([1, 2, 3])
8 popleft方法
作用和pop一样,只不过该方法是从队首删除元素,而pop是从队尾删除元素。和list的pop(0)效果一致。
代码语言:javascript复制from collections import deque
deque1 = deque([1, 2, 3, 4])
deque1.popleft()
print(deque1)
结果:
代码语言:javascript复制deque([2, 3, 4])
9 remove方法
该方法和list的remove方法一样,用于删除第一次出现的元素。当然,被删除的元素不存在则会报错
代码语言:javascript复制from collections import deque
deque1 = deque([1, 2, 3, 4])
deque1.remove(1)
print(deque1)
deque1.remove(100)
结果;
代码语言:javascript复制 deque([2, 3, 4])
deque1.remove(100)
ValueError: deque.remove(x): x not in deque
10 reverse方法
该方法和list的reverse方法一样,用于元素反转
代码语言:javascript复制from collections import deque
deque1 = deque([1, 2, 3, 4])
deque1.reverse()
print(deque1)
结果:
代码语言:javascript复制deque([4, 3, 2, 1])
11 rotate方法
对队列内的元素进行移动
代码语言:javascript复制from collections import deque
deque1 = deque([1, 2, 3, 4])
deque1.rotate(1)
print(deque1)
结果:
代码语言:javascript复制deque([4, 1, 2, 3])
这里是将队列向右移动一个单位,最后一个元素移到了最前面,其余的元素按顺序依次右移
代码语言:javascript复制from collections import deque
deque1 = deque([1, 2, 3, 4])
deque1.rotate(3)
print(deque1)
结果:
代码语言:javascript复制deque([2, 3, 4, 1])
那么在测试用,使用场景有哪些
代码语言:javascript复制#1.测试用例排序
from collections import deque
deque1=deque()
deque1.append("login")
deque1.append("login2")
for i in deque1:
print(i)
代码语言:javascript复制
代码语言:javascript复制使用场景2、多设备并发执行,多线程之间相互取数据
from multiprocessing import Pool
def case(phone,url):
print(phone)
def run_mu(caseqeue, iphonequeue, pool):
while True:
try:
url = caseqeue.popleft()
phone = iphonequeue.popleft()
pool.apply_async(func=case,
args=(phone,url))
iphoneques.append(phone)
except IndexError as e:
pool.close()
pool.join()
break
if __name__ == '__main__':
iphoneques=deque()
iphoneques.append("beijingphone1")
iphoneques.append("shanghaiphone2")
caseqeue=deque()
for i in range(10):
caseqeue.append(caseqeue)
phone_pool = Pool(2)
start_thding = threading.Thread(target=run_mu, args=(caseqeue,
iphoneques,
phone_pool))
start_thding.run()