Question

Pourquoi print(x) ici non valide (SyntaxError) dans la liste suivante-compréhension?

my_list=[1,2,3]
[print(my_item) for my_item in my_list]

Pour contraster - ce qui suit ne donne pas une erreur de syntaxe:

def my_func(x):
    print(x)
[my_func(my_item) for my_item in my_list]
Était-ce utile?

La solution

Parce que l'impression n'est pas une fonction, il est une déclaration, et vous ne pouvez pas les avoir dans les expressions. Cela devient plus évident si vous utilisez Python normale 2 syntaxe:

my_list=[1,2,3]
[print my_item for my_item in my_list]

Cela ne ressemble pas tout à fait raison. :) Les parenthesizes autour des tours de my_item vous.

Cela a changé en Python 3, btw, où l'impression est une fonction, où votre code fonctionne très bien.

Autres conseils

compréhension de la liste sont conçus pour créer une liste. Donc, en utilisant l'impression à l'intérieur donnera une erreur sans matière que nous utilisons l'impression () ou imprimer en 2.7 ou 3.x. Le code

[my_item for my_item in my_list] 

fait un nouvel objet de la liste type.

print [my_item for my_item in my_list]

imprime cette nouvelle liste dans son ensemble

consulter:

Il est une erreur de syntaxe, car print n'est pas une fonction. Il est une déclaration. Puisque vous ne se soucient pas de toute évidence de la valeur de retour de print (puisqu'il en a pas), il suffit d'écrire la boucle normale:

for my_item in my_list:
    print my_item

impression en python 3 rend plus évident sur la façon de l'utiliser.

les supports carrés dans la compréhension de la liste indique que la sortie sera en fait une liste.      L1=['a','ab','abc'] print([item for item in L1])    Cela devrait faire l'affaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top