title: Map on iterators of different length
body: <p>I was answering <a href="https://stackoverflow.com/a/13341670/862380">this question</a> and faced the following problem:</p>
  
  <pre><code>&gt;&gt;&gt; from operator import add
  &gt;&gt;&gt; map(add,[1,2,3],[1,2])
  
  Traceback (most recent call last):
    File "&lt;pyshell#47&gt;", line 1, in &lt;module&gt;
      map(add,[1,2,3],[1,2])
  TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
  </code></pre>
  
  <p>I wanted <code>map</code> to stop as soon as the smallest iterator provided in the parameters is consumed.</p>
  
  <p>I found the solution:</p>
  
  <pre><code>&gt;&gt;&gt; from itertools import imap
  &gt;&gt;&gt; list(imap(add,[1,2,3],[1,2]))
  [2, 4]
  </code></pre>
  
  <p>But, why is that? Shouldn't their behavior be consistent?</p>
  
  <p>Is it the best way I workaround the problem?</p>