title: How does the array.array insertion work under the hood in python?
body: <p>In python, array.array is a mutable structure. </p>
  
  <p>However, I am not sure how the insertion operation works in array.array structure.</p>
  
  <p>Since array.array uses a contiguous memory, does it create a new memory block and copy all the elements of the array if the new element cannot be placed in the contiguous manner? Does it reserve additional unused space just in case for insertion operations?</p>