Skip to content Skip to sidebar Skip to footer

Resolving Map Function Issue In Python 3 Vs Python 2

I'm interested in functional programming with python and am working through Mary Rose Cook's blog post A practical introduction to functional programming. Apparently, it was writte

Solution 1:

As documented, in the migration guide,

In Python 2 map() returns a list while in Python 3 it returns an iterator.

Python 2:

Apply function to every item of iterable and return a list of the results.

Python 3:

Return an iterator that applies function to every item of iterable, yielding the results.

Python 2 always does the equivalent of list(imap(...)), Python 3 allows for lazy evaluation.

Solution 2:

To supplement @dhke's excellent answer (this is too long for a comment) think of it this way. You want to perform multiple transformations on a list by combining map, filter, etc. So there are two ways to think of this:

  1. Apply the first transformation to the entire list, then the second, etc.
  2. Apply all the transformations to the first element of the list, then the second, etc.

The python3 way allows for either, whereas the second cannot be written as succinctly in python 2: you would have to explicitly iterate the list with a for loop and build up a new list of the results.

Post a Comment for "Resolving Map Function Issue In Python 3 Vs Python 2"