Понимание списка: почему это синтаксическая ошибка?
Почему 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]
Ответы
Ответ 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]
выводит этот новый список в целом
обратитесь: здесь