Liste de Compréhension: pourquoi est-ce une erreur de syntaxe?
Pourquoi est print(x)
ici pas valide (SyntaxError
) dans la liste suivante-de la compréhension?
my_list=[1,2,3]
[print(my_item) for my_item in my_list]
Contraste - les éléments suivants ne donnent pas une erreur de syntaxe:
def my_func(x):
print(x)
[my_func(my_item) for my_item in my_list]
InformationsquelleAutor monojohnny | 2010-01-26
Vous devez vous connecter pour publier un commentaire.
Parce que l'impression n'est pas une fonction, c'est une déclaration, et vous ne pouvez pas les avoir dans les expressions. Cela devient plus évident si vous normal d'utilisation de Python 2 syntaxe:
Qui ne regarde pas assez la droite. 🙂 Le parenthesizes autour de my_item astuces vous.
Ce qui a changé dans Python 3, btw, d'où l'impression est une fonction, où votre code fonctionne très bien.
from __future__ import print_function
print(x)
pour éviter les erreur de syntaxe msg, b) il émet une fuite liste de Nvos après l'impression, les éléments de la liste: gist.github.com/maphew/67c88807bf97bf67fbf9print
est maintenant une fonction, vous devez utiliser le corset de la syntaxe, b) vous êtes de retour d'une des listes deNone
s depuisprint
ne retourne rien.C'est une erreur de syntaxe car
print
n'est pas une fonction. C'est une déclaration. Car manifestement, vous n'avez pas de soins sur la valeur de retour deprint
(puisqu'il n'en a pas), il suffit d'écrire la normale de la boucle:compréhension de liste sont conçus pour créer une liste. Alors, en utilisant l'impression à l'intérieur, il va donner une erreur de non-question, nous utilisons print() ou l'imprimer en 2.7 ou 3.x. Le code
fait un nouvel objet de type liste.
imprime cette nouvelle liste de l'ensemble
consulter : ici
[print(char) for char in "abc"]
est valide (mais déconseillé) en python 3.ximpression en python 3, c'est plus évident sur la façon de l'utiliser.
les crochets dans la compréhension de liste indique que la sortie sera effectivement une liste.
L1=['a','ab','abc']
print([item for item in L1])
Ceci devrait faire l'affaire.