in evaluating the results of the experimentwe draw attention to the first line of output from code fragment we see that an empty list instance already requires certain number of bytes of memory ( on our systemin facteach object in python maintains some statefor examplea reference to denote the class to which it belongs although we cannot directly access private instance variables for listwe can speculate that in some form it maintains state information akin ton capacity the number of actual elements currently stored in the list the maximum number of elements that could be stored in the currently allocated array the reference to the currently allocated array (initially noneas soon as the first element is inserted into the listwe detect change in the underlying size of the structure in particularwe see the number of bytes jump from to an increase of exactly bytes our experiment was run on -bit machine architecturemeaning that each memory address is -bit number ( byteswe speculate that the increase of bytes reflects the allocation of an underlying array capable of storing four object references this hypothesis is consistent with the fact that we do not see any underlying change in the memory usage after inserting the secondthirdor fourth element into the list after the fifth element has been added to the listwe see the memory usage jump from bytes to bytes if we assume the original base usage of bytes for the listthe total of suggests an additional bytes that provide capacity for up to eight object references againthis is consistent with the experimentas the memory usage does not increase again until the ninth insertion at that pointthe bytes can be viewed as the original plus an additional -byte array to store object references the th insertion pushes the overall memory usage to hence enough to store up to element references because list is referential structurethe result of getsizeof for list instance only includes the size for representing its primary structureit does not account for memory used by the objects that are elements of the list in our experimentwe repeatedly append none to the listbecause we do not care about the contentsbut we could append any type of object without affecting the number of bytes reported by getsizeof(dataif we were to continue such an experiment for further iterationswe might try to discern the pattern for how large of an array python creates each time the capacity of the previous array is exhausted (see exercises - and - before exploring the precise sequence of capacities used by pythonwe continue in this section by describing general approach for implementing dynamic arrays and for performing an asymptotic analysis of their performance