比较双端队列和列表的元素
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 个元素,则只检查前三个)。
我目前有这段代码
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 个元素,则只检查前三个)。