title: Using map with multiple args
body: <p>Python's <code>map</code> can take multiple iterables, for use when the callable can accept the same number of input arguments. If the input iterables are the same length, thats behaving like the list comprehension passing in zipped arguments, e.g.:</p>
  
  <pre><code>&gt;&gt;&gt; iterables = 'spam', 'eggs'
  &gt;&gt;&gt; map(max, *iterables)
  ['s', 'p', 'g', 's']
  &gt;&gt;&gt; [max(*a) for a in zip(*iterables)]
  ['s', 'p', 'g', 's']
  </code></pre>
  
  <p>When the input arguments are different length, it gets weird - Python 2 (<a href="https://docs.python.org/2/library/functions.html#map" rel="nofollow noreferrer">docs</a>) pads with <code>None</code>, but Python 3 (<a href="https://docs.python.org/3/library/functions.html#map" rel="nofollow noreferrer">docs</a>) truncates to shortest iterable.</p>
  
  <pre><code>&gt;&gt;&gt; map(max, 'spam', 'potato')  # 2.x
  ['s', 'p', 't', 'm', 't', 'o']
  &gt;&gt;&gt; list(map(max, 'spam', 'potato'))  # 3.x
  ['s', 'p', 't', 'm']
  </code></pre>
  
  <p>Why is this feature existing, what's an example of a typical case where that's needed or useful? I don't know a lot about functional styles, could I be missing out on some great strengths of <code>map</code> that are related to the multiple arguments? And what's the rationale for the API change in 3.x?</p>