Ссылочное значение выражения внутри понимания списка в Python?
Если у меня есть понимание списка, как
[mymap.get(x, None) for x in oldlist if mymap.get(x,None)]
Есть ли способ сделать mymap.get(x,None)
только один раз здесь?
Я представляю что-то вроде
[y for x in oldlist if mymap.get(x,None) as y]
но в настоящее время это SyntaxError
в py 2.x. Я хотел бы иметь возможность ссылаться на результирующие значения либо "выражения" понимания списка, либо из его части "list_if".
Я также пытался
[_ for x in oldlist if mymap.get(x,None)]
но это NameError
, Похоже _
будучи только некоторой особенностью переводчика на линиях.
редактировать
Есть ли способ как-то ссылаться на эту временную / анонимную / неназванную переменную, не повторяя список?
2 ответа
Решение
filter(None, (mymap.get(x, None) for x in oldlist))
или, если вам нравится, эквивалентный код, используя bool
вместо
filter(bool, (mymap.get(x, None) for x in oldlist))
И чтобы ответить на ваш вопрос, нет способа сослаться на функцию вывода из предиката.