Подтвердить что ты не робот

Понимание списка: почему это синтаксическая ошибка?

Почему print(x) здесь недействительно (SyntaxError) в следующем понимании списка?

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

Для сравнения: следующее не дает синтаксической ошибки:

def my_func(x):
    print(x)
[my_func(my_item) for my_item in my_list]
4b9b3361

Ответ 1

Поскольку print не является функцией, это оператор, и вы не можете иметь их в выражениях. Это становится более очевидным, если вы используете обычный синтаксис Python 2:

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

Это не совсем правильно.:) В скобках вокруг my_item трюки вы.

Это изменилось в Python 3, кстати, где print - это функция, где ваш код работает очень хорошо.

Ответ 2

Это синтаксическая ошибка, потому что print не является функцией. Это выражение. Поскольку вы, очевидно, не заботитесь о возвращаемом значении от print (так как оно не имеет), просто напишите нормальный цикл:

for my_item in my_list:
    print my_item

Ответ 3

для понимания списка создаются списки. Таким образом, использование печати внутри него даст ошибку, которую мы используем print() или печатаем в 2.7 или 3.x. Код

[my_item for my_item in my_list] 

создает новый объект списка типов.

print [my_item for my_item in my_list]

выводит этот новый список в целом

обратитесь: здесь