728x90
반응형

bisect

이진 탐색 기능을 제공하는 라이브러리

bisect 라이브러리는 '정렬된 배열'에서 특정한 원소를 찾아야 할 때 매우 효과적으로 사용됨

bisect_left() 함수와 bisect_right() 함수가 가장 중요하게 사용됨

이 두 함수는 시간 복잡도 O(logN)에 동작함

함수 설명
bisect_left(a, x) 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드
bisect_right(a, x) 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메서드

 

정렬된 리스트 [1, 2, 4, 4, 8]이 있을 때, 새롭게 데이터 4를 삽입하려 할 때

bisect_left(a, 4)와 bisect_right(a, 4)는 각각 인덱스값으로 2와 4를 반환함

from bisect import bisect_left, bisect_right

a = [1, 2, 4, 4, 8]
x = 4

print(bisect_left(a, x))
print(bisect_right(a, x))
# 2
# 4
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 = biscet_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))
# 2

# 값이 [-1, 3] 범위에 있는 데이터 개수 출력
print(count_by_range(a, -1, 3))
# 6

 


 

collections

덱, 카운터 등의 유용한 자료구조를 포함하고 있는 라이브러리

 

 

deque

보통 파이썬에서는 deque를 사용해 큐를 구현함

별도로 제공되는 Queue 라이브러리가 있지만 일반적인 큐 자료구조를 구현하는 라이브러리는 아니기에 deque를 이용해 큐를 구현해야 함

리스트 자료형과 다르게 인덱싱, 슬라이싱 등의 기능은 사용할 수 없지만 연속적으로 나열된 데이터의 시작 부분이나 끝부분에 데이터를 삽입하거나 삭제할 때 매우 효과적으로 사용됨

deque는 스택이나 큐 자료구조의 대용으로 사용될 수 있음

 

함수 설명
popleft() 첫 번째 원소를 제거할 때
pop() 마지막 원소를 제거할 때
appendleft(x) 첫 번째 인덱스에 원소 x를 삽입할 때
append(x) 마지막 인덱스에 원소를 삽입할 때

 

from collections import deque

data = deque([2, 3, 4])
data.appendleft(1)
data.append(5)

print(data)
print(list(data)) # 리스트 자료형으로 변환
# deque([1, 2, 3, 4, 5])
# [1, 2, 3, 4, 5]

 

 

Counter

등장 횟수를 세는 기능 제공

리스트와 같은 iterable 객체가 주어졌을 때, 해당 객체 내부의 원소가 몇 번씩 등장했는지를 알려줌

from collections import Counter

counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])

print(counter['blue']) # 'blue'가 등장한 횟수 출력
print(counter['green']) # 'green'가 등장한 횟수 출력
print(dict(counter)) # 사전 자료형으로 변환
# 3
# 1
# {'red': 2, 'blue': 3, 'green': 1}

 


 

math

필수적인 수학적 기능을 제공하는 라이브러리

팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 함수부터 파이와 같은 상수를 포함하고 있음

 

함수 설명
factorial(x) x 팩토리얼 반환 = x!
sqrt(x) 제곱근 반환
gca(a, b) a와 b의 최대 공약수
pi 파이
e 자연상수

 

math 라이브러리의 factorial(x) 함수는 x! 값을 반환함

import math

print(math.factorial(5)) # 5 팩토리얼 출력
# 120

 

sqrt(x)는 x의 제곱근 반환

import math

print(math.sqrt(7)) # 7의 제곱근 출력
# 2.6457513110645907

 

gcd(a, b)는 a와 b의 최대 공약수 반환

import math

print(math.gcd(21, 14))
# 7

 

파이, 자연상수 

import math

print(math.pi) # 파이(pi) 출력
print(math.e) # 자연상수 e 출력
# 3.141592653589793
# 2.718281828459045
반응형

'프로그래밍 > Python' 카테고리의 다른 글

비트 연산자  (0) 2021.07.16
Python 설치  (0) 2021.07.12
주요 라이브러리의 문법1  (0) 2021.01.15
입출력  (0) 2021.01.14
반복문  (0) 2021.01.13
복사했습니다!