Popping from the middle of a deque + deque rotation speed

Russell Warren russandheather at gmail.com
Mon May 1 19:38:49 EDT 2006


Thanks for the responses.

> It seems to work with my Python2.4 here.  If you're
> interested in efficiency, I'll leave their comparison as an
> exercise to the reader... :)

Ok, exercise complete! :)  For the record, they are pretty much the
same speed...

>>> s = """
... from collections import deque
... class mydeque(deque):
...   def popmiddle(self, pos):
...     self.rotate(-pos)
...     ret=self.popleft()
...     self.rotate(pos)
...     return ret
... d = mydeque(xrange(1000000))
>>> timeit.Timer(stmt="x=d.popmiddle(1000)", setup = s).timeit(number=100000)
5.4620059253340969
>>> s2="""
... from collections import deque
... class mydeque(deque):
...   def popmiddle(self, pos):
...     ret = self[pos]
...     del(self[pos])
...     return ret
... d = mydeque(xrange(1000000))
... """
>>> timeit.Timer(stmt="x=d.popmiddle(1000)", setup = s2).timeit(number=100000)
5.3937888754018104

Thanks for the alternative solution.

Russ




More information about the Python-list mailing list