0

我想尽可能在​​我的代码中引入赋值表达式,但我偶然发现了一个非常简单的案例,我没有找到一个示例:

举一个非常常见的例子

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

我想知道如何直接使用y,例如我只想要x/yand y/x

在一个更现实的例子中,我目前会写

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

这不是很直观,但我知道模仿 aletwhere语义的唯一方法。

有没有办法说

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

?

编辑

一种非常明显的方法是写

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

但这在我眼中很难读懂。我宁愿有一种方法仍然可以编写(obj.elem1, obj.elem2)并将分配移出元组。

4

0 回答 0