FP like Haskell can bind a (var) name trivially e.g:
[(g y, h y) | x <- mylist, let y = f x]
Python does it possibly below:
mylist = [f(x) for x in mylist]
mylist = [(g(y), h(y)) for y in mylist]
Walrus assignment in Python 3.8 seems a hack to simplify list comprehensions :
[(y := f(x), g(y), h(y)) for x in mylist]
What is so far considered pythonic way in this case?