sum([1,2])
3
SEOYEON CHOI
January 15, 2023
주요 라이브러리 문법
수학 수식이 문자열 형식으로 들어오면 해당 수식을 계산한 결과를 반환
\(\star\) List 형식이어야 함
group 가능
사실 list 는 iterable 객체라 기본으로 sort()함수 가지고 있음
[(1, 1, 1), (1, 1, 3), (1, 1, 5), (1, 3, 1), (1, 3, 3), (1, 3, 5), (1, 5, 1), (1, 5, 3), (1, 5, 5), (3, 1, 1), (3, 1, 3), (3, 1, 5), (3, 3, 1), (3, 3, 3), (3, 3, 5), (3, 5, 1), (3, 5, 3), (3, 5, 5), (5, 1, 1), (5, 1, 3), (5, 1, 5), (5, 3, 1), (5, 3, 3), (5, 3, 5), (5, 5, 1), (5, 5, 3), (5, 5, 5)]
다익스트라 최단 경로 알고리즘을 포함해 다양한 알고리즘에서 우선순위 큐 기능을 구현하고자 할 때 사용
import heapq
def heapsort(iterable):
h = []
result = []
for value in iterable:
heapq.heappush(h,value)
for _ in range(len(h)):
result.append(heapq.heappop(h))
return result
result = heapsort([1,4,5,6,2,2,77,3,25])
print(result)
[1, 2, 2, 3, 4, 5, 6, 25, 77]
이진 탐색 구현
정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메서드
정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메서드
from bisect import bisect_left, bisect_right
a = [1,2,5,6,33,3]
x = 3
b = sorted(a)
print(b)
print(bisect_left(b,x))
print(bisect_right(b,x))
[1, 2, 3, 5, 6, 33]
2
3
from bisect import bisect_left, bisect_right
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,4,5,7,5,3,6,7,9,99,2,22]
b = sorted(a)
print(count_by_range(b,5,5))
print(count_by_range(b,-1,3))
2
3
등장 횟수 세는 기능
최대 공약수