2017-02-23 1 views
-2

입력에 대해 2 번의 테스트를 수행하는 람다 생성. 테스트 1은 쉽습니다. 입력 b가 pats이라는 목록에 있는지 알아야합니다. 그 테스트가 거짓이면 입력이 목록 wcardpats에 일치하는지 여부를 테스트해야합니다. 이는 fnmatch.filter([b], 모든 항목을 WCARDPATS에 따라 지정합니다. 나는 b가리스트가 아니기 때문에 [b]를 사용하고 있지만 fnmatch.filter()은 첫 번째 매개 변수로 파일 이름 목록을 가져오고 두 번째 매개 변수로 테스트 할 패턴을 취합니다.리스트를 통한 파이썬 람다 함수

`lambda b: b in pats` OR THE SECOND TEST 

그래서 난 내 입력의 (b) pats, 또는 wcardpats의 항목 중 하나) fnmatch.filter([b], wcardpats-항목에 대한 일치를 반환 중 하나에 있는지 테스트입니다 람다를 사용할 때.

reg-ex가 아닌 fnmatch.filter()를 사용해야합니다.

+0

그냥 익명의 람다 대신 함수를 정의하십시오. 훨씬 쉽게. – Elmex80s

+1

그냥'any' 함수를 찾으십니까? 'lambda b : b는 pat 또는 any (wcardpats의 fnmatch.filter ([b], e))' – chepner

+0

@ Elmex80s : 이것은 내가 조정할 필요가있는 많은 코드의 일부이기 때문이다. 이 함수는 현재 다른 곳에서 사용되는 람다를 반환합니다. 우리는 '참된'것으로 간주 할 것을 바꿀 필요가 있습니다. 나는이 과제를 배정 받았다. –

답변

0

글쎄 답변으로 의견을 수락 할 수 없으므로 직접 답변 해 드리겠습니다. @chepner는 정확합니다 : lambda b: b in pats or any(fnmatch.filter([b], e) for e in wcardpats)이 작동합니다.