어리석은 질문 : 저는 술어와 일치하는 목록에서 첫 번째 요소를 찾는 관용적 인 방법을 원합니다. 나는 그것을 변경에 대한 생각했습니다술어와 일치하는 시퀀스의 첫 번째 요소를 찾습니다.
[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
을하지만, 그래서 아마 그들은 이미이 있음을 통지하지 않습니다 유틸리티 같은 기능 (그리고 사람들과 코드를 작성 시작하는 것은 매우 맛입니다 그들은 이미 동일한 기능을 제공하는 내장 기능이 있다면 시간이 지남에 따라 반복되는 경향이 있습니다. 존재하지 않는 경우는
이것은 바보 같은 질문이 아니며 @ j-f-sebastian : 이것은 중복되지 않습니다. 이 질문은 특히 하나의 객체를 반환하고 예외를 throw하는 대신 'None'을 반환하는 것에 관한 것입니다. 또한 우아함에 관한 것입니다. 다른 질문은 n00b 질문의 더 많은 것 및 적어도이 아주 명확하게 아닙니다이 것에, 사문하지 않는다. –
"[python sequence find function] (https://stackoverflow.com/questions/6039425/python-sequence-find-function)"보다 나중에 질문하는 것 외에이 질문에는 ** 더 나은 제목 **이 있습니다. – Wolf