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