Lista Compreensão: Por que isso é um erro de sintaxe?
-
22-09-2019 - |
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]
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.