술어와 일치하는 목록에서 첫 번째 요소를 찾는 관용적 방법을 원합니다.
현재 코드는 매우 추악합니다.
[x for x in seq if predicate(x)][0]
나는 그것을 다음과 같이 바꾸는 것에 대해 생각했다.
from itertools import dropwhile
dropwhile(lambda x: not predicate(x), seq).next()
그러나 더 우아한 것이 있어야합니다 ... 그리고 None
일치하는 것이 없으면 예외를 제기하는 대신 값을 반환하면 좋을 것 입니다.
나는 다음과 같은 함수를 정의 할 수 있다는 것을 알고있다.
def get_first(predicate, seq):
for i in seq:
if predicate(i): return i
return None
그러나 이미 동일한 기능을 제공하는 내장 기능이있는 경우 이와 같은 유틸리티 기능으로 코드를 채우기 시작하는 것은 무의미합니다.