Most efficient way to "pre-grow" a list?

Jon Clements joncle at googlemail.com
Fri Nov 6 09:11:44 EST 2009


On Nov 6, 12:12 pm, kj <no.em... at please.post> wrote:

[snip]

> In fact, one would need to pre-grow the list sufficiently to be
> able to make an assignment like this one.  I.e. one needs the
> equivalent of the second Perl snippet above.
>
> The best I can come up with is this:
>
> arr = [None] * 1000000
>
> Is this the most efficient way to achieve this result?

That's a good as it gets I think.

If sparsely populated I might be tempted to use a dict (or maybe
defaultdict):

d = {999: 42, 10673: 123}
for idx in xrange(1000000): # Treat it as though it's a list of
1,000,000 items...
  print 'index %d has a value of %d' % (idx, d.get(idx, None))

Efficiency completely untested.

Jon.



More information about the Python-list mailing list