2016-06-28 3 views
1

これ以上のpythonicな方法があるかどうか、あるいはそれがこのようにするのが容認されているのかどうか疑問に思っていました。リスト内包を含むforループ内のメソッドへの呼び出し

返される値は必要ありませんが、リスト内包の中でいくつかのメソッドを呼び出す必要があります。単なる設定器です。

コード:私の目には

def do_logic(self): 
     [self.set_key(j) for i in xrange(2, CONSTANT) if self.lis[i] != 1 for j in xrange(i*2, CONSTANT, i)] 

それは、それへの正しい方法のような任意の提案は思えないのですか?

+2

実際にリストを使用していないのですか? forループを使うだけです。 –

+0

Forループが高速です。恐らくもっと恐ろしいのは**マップ**でしょう。 – Prune

+2

@プルーンマップは*最悪*です。なぜなら、python3でコードを実行しようとすると、python3のマップが怠惰なので、呼び出しを実行しなくなるからです。いずれにしても、 'map'またはlist-comprehensionを呼び出すことは**式**であり、式は可能な限り副作用がなく、*値を返す*ことが必要です。ですから返す価値がない場合は、明示的な 'for'を使用するだけです。 @Bakuriu。 – Bakuriu

答えて

2

リストが必要ない場合は、リスト内包表記を使用しないでください。ちょうどループを使用してください。

関連する問題