나는 목록에서 술어와 일치하는 첫 번째 요소를 찾는 관용적 방법을 원합니다.
현재 코드는 매우 추악합니다.
[x for x in seq if predicate(x)][0]
다음으로 변경하는 것에 대해 생각했습니다.
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
그러나 이와 같은 유틸리티 함수로 코드를 채우는 것은 의미가 없습니다. 시간이 지남에 따라 반복되는 경향이 있음) 이미 동일한 기능을 제공하는 내장 기능이 있는 경우.