2014-06-21 3 views
0

을 나는 짧은 방법으로 그를 반환하는 함수를 만들 수있는 방법이 있나요만들기 기능 목록 - 이해하기

[this.Attribute for this in THAT if something] 

매우 유사 내 코드에서 여러 라인을 가지고? 매우 지루한 제작 과정을 겪기 때문에 특히 'if-conditions'이 너무 많아서 읽을 수 없습니다.

편집 :

글쎄, 나는 종종 큰 목록 회의 특정 조건에서 뭔가를 얻으려고 시간을 보냅니다. 그리고 종종 기준과 산출물을 변경해야합니다. 유사 항목 :

[obj for obj in Object.ALLOBJECTS if obj.pos == (x,y)] 

[creature.pos for creature in Creature.ALLCREATURES if creature is not caller] 

[creature for creature in Creature.ALLCREATURES if creature.pos == pos and creature is not caller] 

기타 등등.

어쩌면 내가 처음부터 뭔가 잘못하고 있습니다.

+2

질문을 더 명확하게하기 위해 더 많은 코드를 붙여 넣을 수 있습니까? – WKPlus

+1

더 구체적인 질문없이 (itertools.ifilter','itertools.imap','operator.attrgetter', 내장 함수'all'과'any'의 조합을 포함하는) 많은 잠재적 인 해결책이 있습니다 , 좋은 해결책을 제안하기가 어렵습니다. 당신이 게시 한 것은 사실 꽤 명확합니다. 이 함수를 단순하게 래핑하면 훨씬 명확하지 않은 함수 호출의 오버 헤드가 추가됩니다. IMO. – chepner

답변

2

조건부를 함수에 아웃소싱 할 수 있습니다. 복잡하다면, 은 복잡성을 분산시키고 각 부분을 읽기 쉽게 만듭니다. 은 어느 정도 기능의 포인트입니다.