0

可能であればコードに代入式を導入したいのですが、例が見つからない非常に単純なケースに遭遇しました。

非常に一般的な例を挙げると

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

直接使用しない方法が気になります。yたとえば、 I only want x/yand y/x.

より現実的な例では、私は現在書いています

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

これはあまり直感的ではありませんが、letまたはwhereセマティックを模倣する唯一の方法です。

何か言い方はありますか

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

?

編集

非常に明白な方法の1つは、次のように書くことです

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

しかし、これは私の目には読みにくいです。私はむしろ(obj.elem1, obj.elem2)、割り当てをタプルから書き出して移動する方法が欲しいです。

4

0 に答える 0