title: Python list iterator behavior and next(iterator)
body: <p>Consider:</p>
  
  <pre><code>&gt;&gt;&gt; lst = iter([1,2,3])
  &gt;&gt;&gt; next(lst)
  1
  &gt;&gt;&gt; next(lst)
  2
  </code></pre>
  
  <p>So, advancing the iterator is, as expected, handled by mutating that same object. </p>
  
  <p>This being the case, I would expect:</p>
  
  <pre><code>a = iter(list(range(10)))
  for i in a:
     print(i)
     next(a)
  </code></pre>
  
  <p>to skip every second element: the call to <code>next</code> should advance the iterator once, then the implicit call made by the loop should advance it a second time - and the result of this second call would be assigned to <code>i</code>. </p>
  
  <p>It doesn't. The loop prints <em>all</em> of the items in the list, without skipping any. </p>
  
  <p>My first thought was that this might happen because the loop calls <code>iter</code> on what it is passed, and this might give an independent iterator - this isn't the case, as we have <code>iter(a) is a</code>. </p>
  
  <p>So, why does <code>next</code> not appear to advance the iterator in this case?</p>