title: Memory address of list elements in cpython
body: <p>I have heard that Python uses indirection to implement lists. That is, each element in a Python list is actually a pointer or reference to the place in memory where the actual element data (which could be an integer, string or any other data type) is stored. So when I created a list using</p>
  
  <pre><code>    a = ["xyz",2,"deer"]
      id(a[0])
  </code></pre>
  
  <p>I get 43449600. However when I do this:
          id(a[1])
          id(a[2])
  yields 1403048416 and 43489824 respectively, instead of the expected 43449616 (or some multiple), and 43449632 (or some multiple) assuming memory pointers use the same chunk of memory !</p>
  
  <p>Can someone explain what is wrong with my understanding of indirection (or with calling id()) ???</p>
  
  <p>Thanks !</p>