Advantage of the array module over lists?

Diez B. Roggisch deets at nospam.web.de
Mon Mar 17 00:49:33 CET 2008


sturlamolden schrieb:
> On 13 Mar, 20:40, Tobiah <t... at tobiah.org> wrote:
>> I checked out the array module today.  It claims that
>> arrays are 'efficient'.  I figured that this must mean
>> that they are faster than lists, but this doesn't seem
>> to be the case:
>>
>> ################ one.py ##############
>> import array
>>
>> a = array.array('i')
>>
>> for x in xrange(10000000):
>>         a.append(x)
> 
> 
> Lists are better optimized for appending to the end. Python lists are
> implemented as arrays of pointers, with a few empty slots at the
> end.
> 
> Arrays are contigous memory buffers. They provide faster read-write
> access, particularly for chunks of data, but are slower at resizing.

I doubt that. AFAIK both arrays and lists are continuous memory-areas, 
that double (at least to a certain threshold or so) when reaching the 
capacity limit.

lists are of type PyObject* of course, whereas arrays are not, instead 
they are of their respective primitive type, making them more memory 
efficient.

Diez



More information about the Python-list mailing list