2010-12-02 3 views

답변

3

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

+0

내 즐겨 찾기입니다. Flat은 중첩 된 것보다 낫습니다. – twneale

+0

네,이게 완벽합니다. 여러 수확을하고 있었기 때문에 itertools.chain()을 사용하고 싶었습니다. 그래서 수입을 위해 더 많은 것을 얻었습니다. – Tony

+0

@ 토니 : 당신의 코드를 유지하라는 사람들에게 이것이 이해하기 어려울 것이라는 것을 알고 있습니까? 사람들이 이것을 유지해야하는 코드에 넣었을 때 사람들이 싫어한다는 것을 알고 있습니까? –

7

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

... 반 직관적 보인다으로한다.

+0

이것은 PEP 289에있는 예제를 기반으로하며, 처음에는 생성자 표현식을 지정 (제안?)합니다. PEP는 이와 같이 까다로운 경우에 PEP가 어떻게 작동 하는지를 잘 설명하지 못합니다. 어쩌면 그것은 목록 내포로부터이 행동에 대한 친숙성에 달려 있는가? –

+0

고마워, 작동하지만 itertools 메서드가 마음에 들지만 나중에 쓰고 나중에 다시 돌아와서 무엇이 빠르게 일어나고 있는지 이해하기가 훨씬 쉽습니다. – Tony

+0

나는 또한 itertools 방법을 좋아한다. ;) –

관련 문제