> 백엔드 개발 > 파이썬 튜토리얼 > 파이썬의 바이섹트

파이썬의 바이섹트

高洛峰
풀어 주다: 2016-12-14 15:38:16
원래의
1151명이 탐색했습니다.

Python의 bisect는 정렬된 배열을 연산하는 데 사용됩니다. 예를 들어 배열에 데이터를 삽입하는 동안 데이터를 정렬할 수 있습니다. 다음 코드는 작동 방법을 보여줍니다.

출력은 다음과 같습니다.

New pos contents
-----------------
 14   0 [14]
 85   1 [14, 85]
 77   1 [14, 77, 85]
 26   1 [14, 26, 77, 85]
 50   2 [14, 26, 50, 77, 85]
 45   2 [14, 26, 45, 50, 77, 85]
 66   4 [14, 26, 45, 50, 66, 77, 85]
 79   6 [14, 26, 45, 50, 66, 77, 79, 85]
 10   0 [10, 14, 26, 45, 50, 66, 77, 79, 85]
  3   0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85]
 84   9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85]
 44   4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85]
 77   9 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
  1   0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
로그인 후 복사


보시다시피, 다음을 삽입한 후 난수를 생성할 때 배열이 동시에 정렬됩니다. 그러나 위의 77,77과 같이 일부 반복되는 요소가 있습니다. 반복되는 요소의 순서를 설정할 수 있습니다. 동일한 요소의 왼쪽에 표시하려면 bisect_left를 사용하고, 그렇지 않으면 insort_left 및 insort_right를 사용하세요. 예를 들어 다음 코드에서는 반복되는 요소 인덱스 변경을 볼 수 있습니다.

import bisect
import random
random.seed(1)
print('New pos contents')
print('-----------------')
l=[]
 
for i in range(1,15):
    r=random.randint(1,100)
    position=bisect.bisect_left(l,r)
    bisect.insort_left(l,r)
    print '%3d %3d'%(r,position),l
로그인 후 복사

출력 결과는 다음과 같습니다.

New pos contents
-----------------
 14   0 [14]
 85   1 [14, 85]
 77   1 [14, 77, 85]
 26   1 [14, 26, 77, 85]
 50   2 [14, 26, 50, 77, 85]
 45   2 [14, 26, 45, 50, 77, 85]
 66   4 [14, 26, 45, 50, 66, 77, 85]
 79   6 [14, 26, 45, 50, 66, 77, 79, 85]
 10   0 [10, 14, 26, 45, 50, 66, 77, 79, 85]
  3   0 [3, 10, 14, 26, 45, 50, 66, 77, 79, 85]
 84   9 [3, 10, 14, 26, 45, 50, 66, 77, 79, 84, 85]
 44   4 [3, 10, 14, 26, 44, 45, 50, 66, 77, 79, 84, 85]
 77   8 [3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
  1   0 [1, 3, 10, 14, 26, 44, 45, 50, 66, 77, 77, 79, 84, 85]
로그인 후 복사

이 함수 bisect.bisect(list,key)는 Java의 TreeMap의 tailMap(fromkey)과 같습니다


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿