70 votes

L'impression ne s'imprime pas lorsqu'elle est sur la carte, Python

primes = [2,3,5,7..] (prime numbers)
map(lambda x:print(x),primes)

Il n'imprime rien. Pourquoi donc? J'ai essayé

 sys.stdout.write(x)

aussi, mais ne fonctionne pas non plus.

6voto

John Gaines Jr. Points 4127

Cela fonctionne pour moi:

 >>> from __future__ import print_function
>>> map(lambda x: print(x), primes)
2
3
5
7
17: [None, None, None, None]

Utilisez-vous Python 2.x où print est une instruction, pas une fonction ?

4voto

Alternativement, vous pouvez le décompresser en mettant * avant map(...) comme suit

 [*map(...)]

ou

 {*map(...)}

Choisissez la sortie que vous désirez, une liste ou un dictionnaire.

3voto

Anirudh Ramanathan Points 25113

Une autre raison pour laquelle vous pourriez voir cela est que vous n'évaluez pas les résultats de la fonction map. Il renvoie un générateur (un itérable) qui évalue votre fonction paresseusement et non une liste réelle.

 primes = [2,3,5,7]
map(print, primes) # no output, because it returns a generator
 primes = [2,3,5,7]
for i in map(print, primes):
    pass # prints 2,3,5,7

Alternativement, vous pouvez faire list(map(print, primes)) qui forcera également le générateur à être évalué et appellera la fonction print sur chaque membre de votre liste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X