このツールを使用して、Py2 -> Py3 から多数のスクリプトを移植中2to3
です。特定の提案された変更が私を少し混乱させたので、それについての助けをいただければ幸いです。
元の行は次のとおりです。
for r in filter(lambda r: r.dir == direction, hm_regions):
... # do stuff with r
hm_regions
namedtuples
呼び出されたプロパティを保持しdir
、このループを使用して、特定の方向パラメーターに一致するものを反復処理します。
提案された変更は、
for r in [r for r in hm_regions if r.dir == direction]:
これは本質的に同じことを行うことを理解しているため、理論的には結果はまったく変わらないはずです(試していません)。しかし、二重for
ループは非常に醜いと思います。これは、この反復を行うための最も美しく、最も優雅な方法ではないと思います。
構文エラーが原因で失敗するものも試しfor r in hm_regions if r.dir == direction:
ましたが、これは少しフラストレーションがたまりました。
編集:ここでのもう 1 つの質問は、変更することに意味があるかどうかです。提案された変更の根底にある動機は、filter
もはやリストを返さないことだと私は認識しています。しかし、このコンテキストでは、リストを反復処理する以上の目的でリストを使用しません。したがって、それも同様に機能するはずですよね?