에 적용했다. 내장 된 any
함수와는 달리, 사실이라고 간주되는 목록의 첫 번째 값을 가져와야합니다. 그래서 0 or "foo" or 3.2
에 대해서 "foo"
이 필요합니다. 단지 True
이 아닙니다.바로 가기 또는 체인 내가 같은 것을 할 싶습니다 목록
물론, 내가
def returnFirst(f, a):
for i in a:
v = f(i)
if v:
return v
return False
x = returnFirst(f, a)
같은 작은 기능을 쓸 수 있지만 또한 this SO question에 주어진 이유는, 아마도 가장 좋은 해결책이 아니다. 이 다른 스레드에 대해 언급 할 때, 물론 제공된 솔루션을 기반으로하는 코드를 사용할 수 있습니다.
x = next((f(x) for x in a if f(x)), False)
하지만 다음 f
의 두 배 부름을 회피하는 간단한 방법이 표시되지 않습니다.
내가 누락되었거나 모르는 간단한 해결책이 있습니까? 같은 것
OR((f(x) for x in a))
어쩌면?
나는 이와 관련하여 다른 질문을 찾으려고했지만 or
과 같은 키워드를 검색하는 것은 약간 문제가 있으므로 어쩌면 적절한 것을 찾지 못했을 것입니다.
'returnFirst'에는 아무런 문제가 없습니다. 한 곳에서 캡슐화되었습니다. 사람들이 사용하지 않을 것이므로 존재하지 않는 필요한 유틸리티 기능을 만들지 않으면 다른 사람의 작업 과정을 최적화하려고합니다. 나는 그것이 맛이 없다는 것에 동의한다. 적은 양의 문서만으로 문제를 완전히 해결할 수 있습니다. – Crisfole
중복 : http : //stackoverflow.com/questions/1077307/why-is-there-no-firstiterable-built-in-function-in-python –