목록의 정렬 된 목록에서 이진 검색을하는 방법은 Python 3에 있습니까?
의 나는리스트의 목록을 가정 해 봅시다 : 나는 함께 내부 목록에 3D 요소하여 분류 한Python - 목록의 정렬 된 목록에서 이진 검색
list = [['A', 'B', 3], ['C', 'D', 1], ['E', 'F', 2]]
:
list = sorted(list , key=itemgetter(2))
지금 목록
[['C', 'D', 1], ['E', 'F', 2], ['A', 'B', 3]]
된다 이제 정렬 목록에서 이진 검색 (O (log (n)) 시간 복잡도)을 사용하여 검색 할 수 있습니다. 내부 목록의 요소를 사용하여 정렬을 완료 했습니까? Like
findBy(list, index_of_inner_list, value_of_inner_list_to_find)
외부 목록이 큽니다. 내부 목록에는 len50이 있습니다. 내부 목록과 관련된 조건에 따라 외부 목록에서 일부 요소를 추출하기 위해 많은 쿼리를 작성해야합니다. 나는 bisect
에 대해 생각하고 있었지만 내부 배열은 문제가 될 것이라고 생각합니다.
읽어 보셨습니까? https://stackoverflow.com/questions/42146482/using-bisect-on-list-of-tuples-but-compare-using-first-value-only 여기에는 몇 가지 제안 사항이 있습니다. 임의의 키 기능을 사용하는 bisect 구현의 경우. – schwobaseggl
[bisect] (https://docs.python.org/3.6/library/bisect.html#other-examples) 문서 페이지의 마지막 예를 살펴보십시오. 그게 당신이 뭘하려는 것처럼 보이나요? – glibdud
@glibdud이 예제는 OP가 명시 적으로 요구하는 bisect의 'O (log_N)'성능을 파괴하는 키로 새로운 목록을 구성합니다. – schwobaseggl