[Python-ideas] Length hinting and preallocation for container types
Ethan Furman
ethan at stoneleaf.us
Tue Mar 5 20:50:46 CET 2013
On 03/05/2013 11:44 AM, Eli Bendersky wrote:
>
> > The real problem is that this code is not idiomatic Python, especially if
> > you want it to be reasonably fast:
> >
> > � lst = []
> > � for i in range(100):
> > � � � lst.append(i*i)
> >
> > Why not:
> >
> > lst = [i*i for i in range(100)]
> >
> > If the "append" pattern is complex, just "preallocate" like this:
> >
> > lst = [0] * 100
> >
> > And then fill it.
> >
> > Eli
>
> >How would you replicate the behavior of __exit__ in Christian's example?
>
>
> Why would I want to replicate it?
I suspect the new behavior would be most useful when you don't know precisely how large the final list will be:
overallocate (possibly by a large margin), then __exit__ returns the unused portion back to the pool).
--
~Ethan~
More information about the Python-ideas
mailing list