우선 순위 큐 (heapq
)의 (datetime.datetime
)을 우선 순위로 사용하고 있습니다.힙에서 요소를 추출하는 Python 방법
검색 할 startTime 및 endTime이있는 경우이 목록에서 요소의 하위 집합을 추출하는 가장 비범 한 방법은 무엇입니까?
>>> import heapq
>>> timeLine = []
>>> from datetime import datetime
>>> heapq.heappush(timeLine, (datetime.now(),'A'))
>>> heapq.heappush(timeLine, (datetime.now(),'B'))
>>> heapq.heappush(timeLine, (datetime.now(),'C'))
>>> timeLine
[(datetime.datetime(2013, 2, 8, 15, 25, 14, 720000), 'A'), (datetime.datetime(2013, 2, 8, 15, 25, 30, 575000), 'B'), (datetime.datetime(2013, 2, 8, 15, 25, 36, 959000), 'C')]
실제 응용 프로그램 목록 : 아래
내가 무슨의 예입니다 는 (나는 원래 목록을 변경할 수 없습니다, 그래서 반복자를 새 목록을 작성하고 반환 또는 반환해야합니다) 거대하다.
여기에서 힙이 최선의 선택이 아닙니다. 당신이 min/max를 추출하기를 원한다면 generic 요소를 찾는 것이 아니라 좋다. 아마도 가장 간단한 방법은 목록을 정렬하고 결과에 이진 검색을 사용하는 것입니다. – Bakuriu
글쎄, 실제로는 전체 배열을 스캔하고 범위 밖의 datetimes를 필터링하는 것이 더 빠를 것입니다. – Bakuriu