computational complexity the first time we need to double the size is when the second append is called there are two cyber dollars stored up at this point in time one of them is needed when copying the one element stored in the old list to the new fixed size list capable of holding two elements transition one in fig shows the two stored cyber dollars and the result after copying to the new list when moving from step to step when append is called on version of the list the result is version at this pointthree cyber dollars are stored to be used when doubling the list size to four locations the first two are filled with the old contents of the list two of the three stored cyber dollars are used while copying these values to the new list when the list of size four fillstwo additional append operations have occurredstoring five cyber dollars four of these cyber dollars are used in the copy from step to step againwhen the list of size eight fills in step there are nine stored cyber dollars to be used in doubling the list size and copying the elements over butwhat if we didn' double the size of the list each time if we increased the list size by one half its previous size each timewe could still make this argument work if we stored four cyber dollars for each append operation in factas long as the size of the list grows proportionally to its current size each time it is expanded this argument still works to prove that appending to list is ( operation when lists must be allocated with fixed size as mentioned earlierthe python list object is implemented in while python provides an append operationthe language can only allocate fixed size listscalled arrays in and yetpython list objects can append objects in ( time as can be observed by experimentation or by analyzing the code that implements python list objects the python list append implementation achieves this by increasing the list size as described in this section when the fixed size array runs out of space to achieve an amortized complexity of ( summary this covered some important topics related to the efficiency of algorithms efficiency is an important topic because even the fastest computers will not be able to solve problems in reasonable amount of time if the programs that are written for them are inefficient in factsome problems can' be solved in reasonable amount of time no matter how the program is written neverthelessit is important that we understand these issues of efficiency finding the complexity of piece of code is an important skill that you will get better at the more you practice here are some of the things you should have learned in this you shouldknow the complexity of storing or retrieving value from list or the memory of the computer know how memory is like post office know how memory is not like post office this copy belongs to 'acha