]> granicus.if.org Git - python/commitdiff
Issue #12666: Clarifying changes in map for Python 3
authorJason R. Coombs <jaraco@jaraco.com>
Mon, 1 Aug 2011 21:51:34 +0000 (17:51 -0400)
committerJason R. Coombs <jaraco@jaraco.com>
Mon, 1 Aug 2011 21:51:34 +0000 (17:51 -0400)
Doc/whatsnew/3.0.rst

index 852f811eaca31882a554bb62674b5f17e0110bf4..523b34e57406a98e17fabc927cdbfe3ac16d2bcd 100644 (file)
@@ -154,7 +154,9 @@ Some well-known APIs no longer return lists:
   :meth:`dict.itervalues` methods are no longer supported.
 
 * :func:`map` and :func:`filter` return iterators.  If you really need
-  a list, a quick fix is e.g.  ``list(map(...))``, but a better fix is
+  a list and the input sequences are all of equal length, a quick
+  fix is to wrap :func:`map` in :func:`list`, e.g. ``list(map(...))``,
+  but a better fix is
   often to use a list comprehension (especially when the original code
   uses :keyword:`lambda`), or rewriting the code so it doesn't need a
   list at all.  Particularly tricky is :func:`map` invoked for the
@@ -162,6 +164,12 @@ Some well-known APIs no longer return lists:
   regular :keyword:`for` loop (since creating a list would just be
   wasteful).
 
+  If the input sequences are not of equal length, :func:`map` will
+  stop at the termination of the shortest of the sequences. For full
+  compatibility with `map` from Python 2.x, also wrap the sequences in
+  :func:`itertools.zip_longest`, e.g. ``map(func, *sequences)`` becomes
+  ``list(map(func, itertools.zip_longest(*sequences)))``.
+
 * :func:`range` now behaves like :func:`xrange` used to behave, except
   it works with values of arbitrary size.  The latter no longer
   exists.