title: Understanding Python list.append behavior
body: <p>Why in the following example is <code>append</code>ing to the <code>big_l</code> in the <code>for</code> loop changes also the last lists already added to the big_l?</p>
  
  <pre><code>l=[1,2,3,4,5]
  
  big_l=[]
  
  def f(ll):
      x=ll.pop(0)
      ll.append(x)
      return ll
  
  for i in range(4):
      big_l.append(l)
      print l,big_l
      l=f(l)
  </code></pre>
  
  <p>It prints:</p>
  
  <pre><code>[1, 2, 3, 4, 5] - [[1, 2, 3, 4, 5]]
  [2, 3, 4, 5, 1] - [[2, 3, 4, 5, 1], [2, 3, 4, 5, 1]]
  [3, 4, 5, 1, 2] - [[3, 4, 5, 1, 2], [3, 4, 5, 1, 2], [3, 4, 5, 1, 2]]
  [4, 5, 1, 2, 3] - [[4, 5, 1, 2, 3], [4, 5, 1, 2, 3], [4, 5, 1, 2, 3], [4, 5, 1, 2, 3]]
  </code></pre>