>백엔드 개발 >파이썬 튜토리얼 >Python에서 참/거짓 이진 검색을 효율적으로 수행하려면 어떻게 해야 합니까?

Python에서 참/거짓 이진 검색을 효율적으로 수행하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-26 01:40:14992검색

How Can I Efficiently Perform a True/False Binary Search in Python?

Python의 이진 검색: 향상된 접근 방식

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:일 - 루핑다음 기사:일 - 루핑