반응형
특정 기준과 일치하는 첫 번째 목록 항목을 찾고 반환하는 가장 우아하고 효율적인 방법은 무엇입니까?
예를 들어, 객체 목록이 있고 obj.val == 5
속성을 가진 객체의 첫 번째 객체를 가져오고 싶습니다. 물론 목록 이해력을 사용할 수 있지만 O (n)이 발생하고 n이 크면 낭비입니다. 기준이 충족되면 break
와 함께 루프를 사용할 수도 있지만 더 비단뱀적이고 우아한 솔루션이있을 수 있다고 생각했습니다.
해결 방법
객체에 대해 다른 인덱스 나 정렬 된 정보가없는 경우 이러한 객체를 찾을 때까지 반복해야합니다.
next(obj for obj in objs if obj.val==5)
그러나 이것은 완전한 목록 이해보다 빠릅니다. 이 두 가지를 비교하십시오.
[i for i in xrange(100000) if i == 1000][0]
next(i for i in xrange(100000) if i == 1000)
첫 번째는 5.75ms, 두 번째는 58.3µs (루프가 100 배 더 짧기 때문에 100 배 더 빠름)가 필요합니다.
참조 페이지 https://stackoverflow.com/questions/9868653
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python UDP 클라이언트 / 서버 프로그램, 문제 (0) | 2020.09.17 |
---|---|
파이썬 ** kwargs를 사용하여 ** kwargs 인수를 다른 함수에 전달합니다. (0) | 2020.09.17 |
파이썬 목록에서 요소를 제거하려고 할 때 ValueError를 어떻게 무시할 수 있습니까? (0) | 2020.09.16 |
파이썬 Python에서 모듈 가져 오기-모범 사례 (0) | 2020.09.16 |
파이썬 Django 1.3 이하의 Django Admin에서 사용자 지정 필터 (0) | 2020.09.16 |
댓글