@Intelide

Как составить генератор списка?

Здравствуйте
есть список res [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
почему я в генераторе списка не могу выполнить присваивание?
[p*=x for x in res[1:]]
       ^
SyntaxError: invalid syntax
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 3
aRegius
@aRegius
Python Enthusiast
Здравствуйте.

Вы не можете выполнить присваивание в list comprehension, потому что "A list comprehension consists of brackets containing an expression followed by a for clause, then zero or more for or if clauses..." - docs.python.org

Очевидно, a=b это НЕ expression, А statement (assignment statement, если точнее).

Отличия, при желании, погуглите. Например.
Ответ написан
Sly_tom_cat
@Sly_tom_cat
.
Используйте yield для сложных генераторов

def gen(list):
  p=1
  for x in list[1:]:
    p*=x
    yield p

[p for p in gen(res)]
Ответ написан
BBmike
@BBmike
ты хочешь перемножить каждый элемент списка на p?

тогда вот
def r(arr):
    p = 2
    return [x * p for x in range(arr[1], len(arr))]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы