Pergunta

Por que é print(x) Aqui não é válido (SyntaxError) na seguinte compreensão da lista?

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

Para contrastar - o seguinte não fornece um erro de sintaxe:

def my_func(x):
    print(x)
[my_func(my_item) for my_item in my_list]
Foi útil?

Solução

Como a impressão não é uma função, é uma declaração e você não pode tê -las em expressões. Isso fica mais óbvio se você usar a sintaxe normal do Python 2:

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

Isso não parece certo. :) Os parênteses em torno do My_item enganam você.

Isso mudou no Python 3, btw, onde impressão é uma função, onde seu código funciona muito bem.

Outras dicas

A compreensão da lista é projetada para criar uma lista. Portanto, usando a impressão dentro, ele fornecerá um erro, não, usamos print () ou impressão em 2.7 ou 3.x. O código

[my_item for my_item in my_list] 

Faz um novo objeto de lista de tipos.

print [my_item for my_item in my_list]

imprime esta nova lista como um todo

referir : aqui

É um erro de sintaxe porque print não é uma função. É uma declaração. Já que você obviamente não se importa com o valor de retorno de print (Como não tem), apenas escreva o loop normal:

for my_item in my_list:
    print my_item

A impressão no Python 3 torna mais óbvio sobre como usá -lo.

Os colchetes quadrados na compreensão da lista indica que a saída será realmente uma lista. L1=['a','ab','abc'] print([item for item in L1]) Isso deve fazer o truque.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top