2to3
ツールを使用して、Py2 - > Py3から一連のスクリプトを移植しています。一つの特定の提案の変更は私に少し混乱し、私はそれにいくつかの助けいただければと思います:Python 2to3、条件付きでリストを反復する(フィルタ対リスト解説)
を元の行は次のようになります。
for r in filter(lambda r: r.dir == direction, hm_regions):
... # do stuff with r
hm_regions
は私が反復dir
と呼ばれる性質を持っており、このループを使用してnamedtuples
を保持しています指定された方向パラメータに一致するものよりも優先されます。
示唆した変更は、私は理論的には結果がすべてで変更すべきではありませんので、これは、本質的に同じことをしていることを理解し
for r in [r for r in hm_regions if r.dir == direction]:
です(試していません)。しかし、私はdouble for
ループが非常に醜いと思う、そして、私はこれがこの繰り返しを行うための最もきれいで、最も優雅な方法ではないと思う。
また、私はfor r in hm_regions if r.dir == direction:
を試してみましたが、構文エラーのために失敗しました。これは少し不満でした。
EDIT:もう1つの質問は、まったく変更しても意味がありますか?提案された変更の根底にある動機は、filter
がもうリストを返さないということです。しかし、この文脈では、私はそれを繰り返す以上に、リストを使用しません。したがって、うまくいくはずですよね?
フィルタリングは、それが価値があるために遅くなります。 [このリンク](http://stackoverflow.com/questions/3013449/list-filtering-list-comprehension-vs-lambda-filter)を参照してください。 – chrislessard