YoungSoo

Python - 주요 내장 함수 및 라이브러리 본문

BE/Python

Python - 주요 내장 함수 및 라이브러리

YoungSooSoo 2022. 12. 28. 11:30

이번에는 파이썬의 주요 내장 함수와 라이브러리에 대해 알아보려고 한다.

최근에 알고리즘 공부를 하면서 주요 내장 함수들의 중요성에 대해 깨닫게 되었다.

내장 함수들을 사용하지 않더라도 구현이 가능하지만 사용한다면 정말 간편하게 사용할 수 있다.

하지만 직접 구현한 함수가 시간적인 측면에서 더 빠르다.

그렇지만 공부를 하기 위해서 알아두면 좋을 거 같다. 또한 파이썬의 라이브러리에는

더 많이 사용하기 좋은 라이브러리가 존재하며 어떤 상황에 어떤 식으로 사용해야 하는지 정도만 알아두면

좋을 거 같다.

주요 내장 함수

  • sum
    • result = sum([1,2,3,4,5]) # 15
  • min
    • result = min(7,3,5,2) # 2
  • max
    • result = max(7,3,5,2) # 7
  • eval - 계산식을 계산 해줌
    • result = eval("(3+5) * 7") # 56
  • sorted
    • result = sorted([9,1,8,5,4]) # [1,4,5,8,9]
    • result = sorted([9,1,8,5,4], reverse=True) # [9,8,5,4,1]
    • result = sorted([('홍길동', 35), ('이순신', 75), ('아무개', 50)], key=lambda x: x[1], reverse=True) # [('이순신', 75), ('아무개', 50), ('홍길동', 35)]
  • sort - 내부 값이 바로 변경됨
  • data = [9,1,8,5,4]
    • data.sort() # [1,4,5,8,9]

라이브러리

itertools

  • permutations - 순열
from itertools import permutations

result = list(permutations(data, 2))	# 2개 뽑는 모든 순열
# 순열은 순서가 중요하기 때문에 2개를 뽑아 순서대로 나열한다
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
  • combinations
from itertools import combinations

result = list(combinations(data, 2))	# 2개 뽑는 모든 조합

# 2개
[('A', 'B'), ('A', 'C'), ('B', 'C')]
  • product - 중복 포함 permutations
from itertools import product

result = list(product(data, repeat=2))	# 2개 뽑는 모든 순열 (중복 포함)

[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
  • combinations_with_replacement - 중복 포함 combinations
from itertools import combinations_with_replacement

result = list(combinations_with_replacement(data, repeat=2)) # 2개 뽑는 모든 조합 (중복 포함)

heapq

  • 우선순위 큐 기능을 구현할 때
  • 시간 복잡도: O(NlogN)
import heapq

heap.heappush(리스트, value) # 오름차순
heap.heappop(리스트)

heap.heappush(리스트, -value) # 내림차순
heap.heappop(리스트)

bisect

  • left_value ≤ x ≤ right_value 원소의 개수 구하기
  • 시간 복잡도: O(logN)
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

collections

  • deque
    • 인덱싱과 슬라이싱 불가
    • 데이터 삽입, 삭제: O(1)
from collections import deque

data.appendleft(x)
data.append(x)
data.popleft()
data.pop()
  • Counter
from collections import Counter

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

counter['red']	# 2
counter['blue']	# 3
counter['green'] # 1
dict(counter)	# {'red': 2, 'blue': 3, 'green': 1}

Math

  • factorial
import math

math.factorial(5)	# 120
  • sqrt
import math

math.sqrt(7)	# 2.645751...
  • gcd
import math

math.gcd(21, 14)	# 7
  • pi & 자연상수 e
import math

math.pi # 3.141592...
math.e # 2.718281...

'BE > Python' 카테고리의 다른 글

Python - 예외처리  (0) 2022.12.23
Python - 패키지  (0) 2022.12.21
Python - 모듈  (0) 2022.12.19
Python - 클래스  (0) 2022.12.17
Python - 파일 읽고 쓰기  (0) 2022.12.16