범위 range

range(1, 10) # 1~9 range는 a이상 b미만

최소/최대/합/개수/평균/제곱/나누기/절대값

mi = min(arr)
ma = max(arr)
s = sum(arr)
cnt = arr.count(3)
avg = sum(arr)/len(arr)
sqrt = math.sqrt(num)
sqrt = num ** 0.5
divmod(10, 3)    # (3, 1) 몫과 나머지
abs(num)    # 절대값

문자열 대소문자/유니코드, 바이트 변환

arr.upper()
arr.isupper()    # 대문자 체크
arr.lower()
arr.islower()    # 소문자 체크
 
char = 'A' 
num = ord(char) # 65 유니코드로 변환
char = chr(num) # A 문자열로 변환
 
encoded = s.encode('utf-8')  # 바이트 인코드
decode = encode.decode('utf-8')  # 바이트 디코드

문자열 빈도, 알파벳만 필터링

from collections import Counter
 
text = "Hello World"
text_lower = text.lower()
 
# 알파벳만 필터링
letters = [c for c in text_lower if c.isalpha()]
 
# 빈도 계산
freq = Counter(letters)
# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})

문자열 변환

str(num)
int(num)

문자열 채우기

result = f"{num:03d}"   # "007"
result = str(num).zfill(3)   # "007"
result = f"{num:5d}"   # "     7"

연속 숫자/문자열을 리스트로 변환

list(s)
list(map(int, s.split()))

줄 단위 분리 (splitlines() 사용)

s = "first line\nsecond line\nthird line"
result = s.splitlines()
print(result)  # ['first line', 'second line', 'third line']

문자열 검색

sentence = "Hello, world!"
 
index = sentence.find("world")    # 첫 index, find(substring, start, end), 없으면 -1
index = sentence.index("world")   # 없으면 에러남
index = sentence.rfind("Hello")   # 오른쪽에서부터 검색, 가장 높은 index 반환
index = sentence.rindex("Hello")  # 없으면 에러남
 

약수 구하기

import math
# 약수는 짝(pair) 형태로 존재하므로 N의 제곱근까지만 검사하면 된다. 나눈 나머지가 0인 경우.
# 단, i == N // i (즉 i가 제곱근)인 경우는 중복 추가를 피하기 위해 한 번만 추가한다.
answers = []
for i in range(1, int(math.sqrt(N)) + 1):  # int(N ** 0.5) + 1로 변형해도 됨
	if N % i == 0:
		res.append(i)
		if i != N // i:  # 자기자신 중복 방지
			res.append(N // i)
print(answers)

최대공약수(GCD, Greatest Common Divisor)

# 유클리드 호제법(Euclidean Algorithm)
# 두 수 a, b의 최대공약수는 b가 0이 될 때까지 a % b를 반복한 값이다.
# gcd(a, b) = gcd(b, a % b)
def gcd(a, b):
	while b != 0:
		a, b = b, a % b
	return a
 
print(gcd(12, 18))  # 6

최소공배수(LCM, Least Common Multiple)

# 최소공배수(LCM)는 두 수의 곱에서 최대공약수(GCD)를 나눈 값과 같다.
# a * b = GCD(a, b) * LCM(a, b)
def gcd(a, b):
	while b != 0:
		a, b = b, a % b
	return a
 
def lcm(a, b):
	return a * b // gcd(a, b)
 
print(lcm(12, 18))  # 36

zip: 묶음 함수

여러 개의 iterable(리스트, 튜플 등)을 “같은 위치끼리 묶어서” 하나의 묶음으로 만들어주는 함수

a = [1, 2, 3]
b = ['a', 'b', 'c']
 
for x, y in zip(a, b):
    print(x, y)
 
for i, (g, p) in enumerate(zip(genres, plays)):
    print(i, g, p)