On Jan 22, 11:10 pm, [email protected] (Aahz) wrote:
> In article <[email protected]>,
> Steve Howell <[email protected]> wrote:
>
>
>
>
>
> >I really want to use list *normally* with all its perfectly good
> >semantics and reasonable implementation, except for its blind spot
> >with respect to popping the first element off the list. The whole
> >reason I use CPython vs. C in the first place is that CPython
> >programmers can generally program basic data structures better than I
> >can. But list.pop(0) is the exception. And, with the possible
> >exception of dicts, lists are the most fundamental data structures
> >that Python has.
>
> >I know Python's number one concern will never be speed, but if Python
> >makes an O(1) operation into an unnecessarily O(N) operation for no
> >good reasons other than "it's too complicated, " or it "adds another
> >pointer to the structure," or "it adds another conditional check to
> >list_ass_slice for operations that aren't popping off the top," I
> >think it's reasonable to challenge the design philosophy.
>
> "Rough consensus and running code."
>
> You have a good point, but nobody will ever give your idea serious
> attention until there's a patch and benchmarks.
Another benchmark is that deques are slower than lists for accessing
elements.
show...@showell-laptop:~$ python foo.py
0.0215361118317 <- list
0.0429010391235 <- deque
import time
from collections import deque
n = 40000
lst = []
for i in range(n):
lst.append(i)
t = time.time()
for i in range(n):
lst[i]
print time.time() - t
lst = deque(lst)
t = time.time()
for i in range(n):
lst[i]
print time.time() - t
So substituting deque for list suffers not just in convenience, but
also in performance.
--
http://mail.python.org/mailman/listinfo/python-list