2010-12-02 1 views

答えて

3

itertools.chain.from_iterable(s.messages for s in self.services)

+0

これは私のお気に入りです。フラットはネストされたものよりも優れており、特に1ライナーでは優れています。 – twneale

+0

はい、これは完璧です - 私はitertools.chain()を使用したかったので、私は複数の利回りを行っていたので、私はちょうどインポートのためにもっと持っています。 – Tony

+0

@トニー:これはあなたのコードを維持するように頼まれた人々には完全に理解できないことに気づいていますか?あなたが維持しなければならないコードにこれを入れて、人々があなたを憎むことに気付いていますか? –

7

(m for s in self.services for m in s.messages)

...直感的それはそうと同じくらい。

+0

これは、最初にジェネレータ式を指定する(提案する)PEP 289の例に基づいています。 PEPは、このような厄介なケースでどのように動作するかを実際にはうまく説明していません。おそらくそれはリストの理解からこの行動に精通しているかどうかにかかっていますか? –

+0

ありがとう、それは動作しますが、私はitertoolsメソッドが好きです。書き留めやすく、後で戻ってきて、何が起こっているのかをすぐに理解することができます。 – Tony

+0

私はitertoolsメソッドも好きです。 ;) –

関連する問題