私の最高の試みは失敗している:これをワン・ライン・ジェネレータにするにはどうしたらいいですか?
for s in self.services:
for m in s.messages: yield m
私の最高の試みは失敗している:これをワン・ライン・ジェネレータにするにはどうしたらいいですか?
for s in self.services:
for m in s.messages: yield m
itertools.chain.from_iterable(s.messages for s in self.services)
(m for s in self.services for m in s.messages)
...直感的それはそうと同じくらい。
これは、最初にジェネレータ式を指定する(提案する)PEP 289の例に基づいています。 PEPは、このような厄介なケースでどのように動作するかを実際にはうまく説明していません。おそらくそれはリストの理解からこの行動に精通しているかどうかにかかっていますか? –
ありがとう、それは動作しますが、私はitertoolsメソッドが好きです。書き留めやすく、後で戻ってきて、何が起こっているのかをすぐに理解することができます。 – Tony
私はitertoolsメソッドも好きです。 ;) –
@Oscar Pythonはあなたがそのような同じ行に(より良い用語の欠如のため)2スイート・イントロデューサを置くことはできません。 –