Python対分


< bisect >
  • バイナリナビゲーションを容易に実施するためのライブラリ
  • 配列で特定の要素を検索する必要がある場合、非常に有効な
  • 最も重要なのは、
  • 対の左()および対右()関数
  • を使用することである.
  • 時間複雑度O(logn)
  • 対left(a,x):メソッド
  • は、リストaにデータxを挿入する最も左側のインデックスを検索し、ソート順を維持します.
  • 対分right(a,x):メソッド
  • は、リストaにデータxを挿入する最も右側のインデックスを検索して、ソート順を維持します.
    # 정렬된 리스트에 새로운 데이터를 삽입하는 예시
    
    from bisect import bisect_left, bisect_right
    
    a = [1, 2, 4, 4, 8]
    x = 4
    
    print('bisect_left index :', bisect_left(a,x))
    print('bisect_right index :', bisect_right(a,x))
  • 並べ替えリストでは、
  • を有効に使用して、特定の範囲に属する要素の数を計算する.
    from bisect import bisect_left, bisect_right
    
    # 값이 [left_value, right_value]인 데이터 개수를 반환하는 함수
    def count_by_range(a, left_value, right_value):
      right_index = bisect_right(a, right_value)
      left_index = bisect_left(a, left_value)
      return right_index - left_index
    
    # 리스트 선언
    a = [1, 2, 3, 3, 3, 3, 4, 4, 8 ,9]
    
    # 값이 4인 데이터 개수 출력
    print(count_by_range(a, 4, 4))
    
    # 값이 [-1, 3] 범위에 있는 데이터 개수 출력
    print(count_by_range(a, -1, 3))