3
for x in [temp for temp in xlist if temp<=xmax]: 

このコードは機能しますが、for ループを開始するための不必要に異質な方法のように見えます。

よりクリーンな構文はありますか?

4

4 に答える 4

4

ここで何をしようとしていますか?

for x in xlist:
    if x > xmax: continue

動作します。(for ループの残りの部分は何をしますか?) list-comp のみを使用して達成できる場合は、それが良い方法かもしれません。できない場合は、おそらく上記のイディオム、またはここに投稿された他の回答に表示されるバリアントが必要です。

于 2012-07-02T14:37:32.473 に答える
0
for x in xlist:
    if x <= xmax:
        #do stuff

余談ですが、可能であれば、元のバージョンでジェネレーター式を使用することをお勧めします。これは、不要なリストを事前に作成しないためです。

for x in (temp for temp in xlist if temp <= xmax):
    #etc.
于 2012-07-02T14:38:21.160 に答える
0

なぜfilterですか?

filter(function, iterable)

filter(function, iterable)と同等です[item for item in iterable if function(item)]

あなたの場合:

filter(lambda item: item <= xmax, xlist)
于 2012-07-02T14:41:32.337 に答える
0
for x in filter(lambda x: x<=xmax, xlist):
    pass
# or with itertools (faster on python2, on py3 these are equivalent):
import itertools
for x in itertools.ifilter(lambda x: x<=xmax, xlist):
    pass

ただし、コード全体をリスト内包表記として書き直すことができる可能性があることを示唆する@mgilsonの回答も見てください。

于 2012-07-02T14:39:19.813 に答える