title: Why does g.append(l.pop()) return the second half of l but l only has the first half
body: <p>While I was working over one program, I got to see one strange behavior in my code.Here is what I saw.</p>
  
  <pre><code>&gt;&gt;&gt; l = [1,2,3,4,5,6,7,8]
  &gt;&gt;&gt; g = []
  &gt;&gt;&gt; for i in l:
  ...     g.append(l.pop())
  ... 
  &gt;&gt;&gt; l
  [1, 2, 3, 4]
  &gt;&gt;&gt; g
  [8, 7, 6, 5]
  &gt;&gt;&gt; 
  </code></pre>
  
  <p>The list <code>g</code> was supposed to have all the elements of list <code>l</code> here! But why did it only take half of the list into account? </p>
  
  <p><strong>Disclaimer</strong>: I am not trying to copy a list or reverse a list. This was something that I found while working over something else.</p>