Hello,

It is likely not the first time such a proposal is being made but let's see.
I would like to explicitly set variable names in list comprehensions using a where keyword, eventually set after the if keyword:

[price for item in basket if price is not None where price := item.get('price')]

For this example one could use the walrus operator which is indeed smaller: 
[price for item in basket if price := item.get('price') is not None]

But I fell that this approach is a bit opportunistic as one is doing two things at a time, if you allow me more lines for a somewhat more complex example:

[
    price * (1 +
vat)
   
for
        item
in basket
    if

        price
is not None
   
where
        price
:= item.get('price')
        vat := get_vat(item, user)
]


Now this example may look pretty stupid and probably one may simply use for loop, but I feel that this kind of Haskell-like where inside of list comprehension will let the programmer have a space where they can explicitly state the variables.

Best regards,
Fabrizio