Python에서는 bisect 모듈을 통해 이진 검색이 쉽게 수행됩니다. 그러나 목록 내 항목의 존재에 대한 정확한 표시가 필요한 경우 bisect_left 및 bisect_right 함수로는 충분하지 않을 수 있습니다.
이러한 요구를 해결하기 위해 Python 라이브러리는 다음과 같은 이진 검색에만 맞춤화된 전용 함수를 제공하지 않습니다. 명시적인 True/False 출력. 결과적으로 맞춤형 솔루션이 필요합니다.
다음 스니펫은 정렬된 목록 a에 대해 이진 검색을 수행하고 발견된 경우 대상 항목 x의 인덱스를 반환하는 Binary_search 함수를 정의합니다. x가 없으면 -1을 반환합니다.
from bisect import bisect_left def binary_search(a, x, lo=0, hi=None): if hi is None: hi = len(a) pos = bisect_left(a, x, lo, hi) # Find insertion position return pos if pos != hi and a[pos] == x else -1 # Check if x is there
이 함수는 bisect_left를 활용하여 x의 삽입 지점을 결정합니다. x가 목록에 있으면 이 삽입 지점에 위치하게 됩니다. 이를 확인하기 위해 삽입 지점의 값을 x와 비교합니다. 일치하면 x가 발견되고 해당 인덱스가 반환됩니다. 그렇지 않으면 x가 존재하지 않으며 이를 나타내기 위해 -1이 반환됩니다.
이 사용자 정의 함수는 목록 내 항목의 존재에 대한 명확한 True/False 표시를 통해 이진 검색을 수행하기 위한 간결하고 효율적인 솔루션을 제공합니다. 원래 질문에서 확인된 요구 사항을 충족합니다.
위 내용은 Python에서 참/거짓 이진 검색을 효율적으로 수행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!