Print doesn't print when it's in map, Python
primes = [2,3,5,7..] (prime numbers)
map(lambda x:print(x),primes)
It does not print anything. Why is that? I've tried
sys.stdout.write(x)
too, but doesn't work either.
Solution 1:
Since lambda x: print(x)
is a syntax error in Python < 3, I'm assuming Python 3. That means map
returns a generator, meaning to get map to actually call the function on every element of a list, you need to iterate through the resultant generator.
Fortunately, this can be done easily:
list(map(lambda x:print(x),primes))
Oh, and you can get rid of the lambda too, if you like:
list(map(print,primes))
But, at that point you are better off with letting print handle it:
print(*primes, sep='\n')
NOTE: I said earlier that '\n'.join
would be a good idea. That is only true for a list of str's.
Solution 2:
This works for me:
>>> from __future__ import print_function
>>> map(lambda x: print(x), primes)
2
3
5
7
17: [None, None, None, None]
Are you using Python 2.x where print is a statement, not a function?