可能であればコードに代入式を導入したいのですが、例が見つからない非常に単純なケースに遭遇しました。
非常に一般的な例を挙げると
[(y := f(x), x/y) for x in some_iterable]
直接使用しない方法が気になります。y
たとえば、 I only want x/y
and 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)
、割り当てをタプルから書き出して移動する方法が欲しいです。