复制一个空的双端队列

3
我希望能够高效地创建多个空deque。在Python中,我该如何做呢?我的第一个想法是像这样做:
import collections

i = j = k = l = collections.deque()

这段代码只是创建了多个引用同一个deque的变量。我该如何快速地创建多个空deque呢?

2
为什么要这么急呢?使用defaultdict(deque)如何? - kojiro
2
@StevenRumbalski from collections import deque as dequeue :P从collections库中导入deque并重命名为dequeue。 :P - kojiro
2
你的实际问题是什么?正如所述,这似乎是极度过早的优化。 - Tyler Eaves
1
@TylerEaves:我认为(或者只是希望?)OP所说的“快速”只是指“不重复自己并且不用打很多代码”,而不是“在至少削减14us的CPU时间的5%的同时”。 - abarnert
1
我同意Tyler的观点:如果我们知道OP为什么想要四个双端队列,我们可能能够提出更好的解决方案。 是可疑的,因为它违反了零一无限规则 - Gareth Rees
我喜欢这种问题,因为它表明即使在Python的“做一件事应该有且只有一种明显的方法”中,仍然有许多不明显错误的方法可以做一个事情。 - kojiro
2个回答

8

使用生成器表达式:

i, j, k, l = (collections.deque() for _ in xrange(4))

3
在列表推导式中使用xrange而不是range来避免创建一个不必要的包含4个整数的列表有些奇怪,但随后又使用它来创建一个不必要的包含4个deque的列表更加奇怪。 - abarnert
2
i,j,k,l=map(deque,[[]]*4) </troll_golf> - kojiro

2

简单的解决方案往往是最好的。需要创建4个deque对象,并将它们分别赋值给变量。您似乎只是想避免多出几行代码,但这并不会影响代码的效率。

from collections import deque

i = deque()
j = deque()
k = deque()
l = deque()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接