比较双端队列和列表的元素

Comparing elements of deque and list

我目前有这段代码

import collections as c
a1 = ['a' , 'b','c']
q1 = c.deque(maxlen=3) 
q1.append('a')
q1.append('d')
q1.append('c')

q1 = list(q1)

counter = 0
for i in q1:
    if i == q1.dequeue():
        counter += 1

有没有更快或更有效的方法来比较 2 个列表的元素并评估它们之间的重叠?一组不是要走的路,因为我需要重复的元素,而且它们必须是有序的。

列表是有序元素。因此,我的 dequeue 的长度将等于列表。

我想计算列表和出队之间有多少重叠。

根据您修改后的问题,我将利用 运行 对列表和双端队列对象的 zip 迭代双端队列对象这一事实。例如:

import collections as c
a1 = ['a' , 'b','c']
q1 = c.deque(maxlen=3) 
q1.append('a')
q1.append('d')
q1.append('c')
counter = sum(1 if a == q else 0 for (a, q) in zip(a1, q1))
# or, they're basically equivalent
counter = sum(1 for (a, q) in zip(a1, q1) if a == q)

这将计算 a1 和 q1 具有相同值的索引的数量,一旦用尽就结束(因此如果 a1 的长度为 100 个元素,则只检查前三个)。