Assignment expression without direct use

25 Views Asked by At

I'd like to introduce assignment expressions in my code where possible but I've stumbled upon a very simple case I didn't find an example for:

Given a very common example

[(y := f(x), x/y) for x in some_iterable]

I wonder how to not use y directly, e.g. I only want x/y and y/x.

In a more realistic example I would currently write

[(obj.elem1, obj.elem2) for x in some_iterable for obj in (f(x),)]

which is not very intuitive but the only way I know to mimic a let or where semamtic.

Is there some way to say

[(obj.elem1, obj.elem2) where obj := f(x) for x in some_iterable]

?

Edit:

One very obvious way would be to write

[((obj := f(x)).elem1, obj.elem2) for x in some_iterable]

but this is hard to read in my eyes. I'd rather have a way to still write (obj.elem1, obj.elem2) and move the assignment out of the tuple.

0

There are 0 best solutions below