For a normal function, map works well:
def increment(n):
return n+1
l = [1, 2, 3, 4, 5]
l = map(increment, l)
print l
>>> [2, 3, 4, 5, 6]
However, if it’s print being put inside the map function:
l = [1, 2, 3, 4, 5]
l = map(print, l)
print l
python will complain:
l = map(print, l)
^
SyntaxError: invalid syntax
What makes print special? Doesn’t print(x) also a valid function call? The above code are tested under python 2.7.
In Python 2.x,
printis a statement, not a function. If you try this in Python 3.x it will work.In Python 2.x, you can say
print(x)and it is not a syntax error, but it isn’t actually a function call. Just as1 + (3)is the same as1 + 3,print(x)is the same asprint xin Python 2.x.In Python 2.x you can do this:
Then you can do:
and it will work. Note that you probably don’t want to do
lst = map(prn, lst)becauseprn()returnsNone, so you will replace your list of values with a same-length list of just the valueNone.EDIT: Two other solutions for Python 2.x.
If you want to completely change the behavior of
print, you can do this:This makes
printinto a function just as it is in Python 3.x, so it works withmap().Or, you can do this:
pprint()is a function that prints things and it is available as a built-in. I’m not exactly sure how it is different from the defaultprint(it says it is a “pretty-print” function but I’m not sure how exactly that makes it different).Also, according to the PEP 8 standard, it is non-recommended to use
las a variable name, so I am usinglstinstead in my examples.http://www.python.org/dev/peps/pep-0008/