Python_Library
โ
Python Library ๐
-
Idea
1 2 3 4 5 6 7 8 9 10 11 12 13
# ๋ชจ๋ '๊ฑฐ์ง'์ด ๋ค์ด์๋ ๋ฆฌ์คํธ๋ '๊ฑฐ์ง'์ผ๋ก ๋ณผ ์ ์์ง ์์๊น? # ๋ผ๊ณ ์๊ฐํด๋ดค๋ค. a = [False, False, False] if a == False: print("๊ฑฐ์ง") else: print("์ค๋ฅ") # >>> ์ค๋ฅ # ์๋๋ค. ์๊ฐ์ ๋ง์๋ผ..ใ ใ
โ
-
raise ์์ธ(‘์๋ฌ๋ฉ์์ง’)
1 2 3 4 5 6 7 8 9 10 11 12
# python์์๋ ์๋์ ์ผ๋ก ์ค๋ฅ๋ฅผ ์ผ์ผํฌ ์ ์๋๋ฐ # ์ด๋ฅผ ํด์ฃผ๋ ๊ฒ์ด raise ๋ฉ์๋. try: x = 2 if x % 3 != 0: raise Exception('3์ ๋ฐฐ์๊ฐ ์๋๋๋ค.') print("์ ๋ ฅ๋ ๊ฐ", x) except Exception as e: print('์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค.', e) >>> ์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค. 3์ ๋ฐฐ์๊ฐ ์๋๋๋ค.
โ
-
filter() VS find()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## filter(function, iterable) # ๋ฐฐ์ด์ `๋ชจ๋ ์์`์ ์ ๊ทผํ์ฌ ์กฐ๊ฑด์ ๋ง๋ `๊ฐ`์ ์ฐพ๋๋ค. # ex) def func(x): if x > 0: return x else: return None list(filter(func, range(-5,10))) >>> [1, 2, 3, 4, 5, 6, 7, 8, 9] # ex) [ i for i in range(-5,10) if i > 0 ] >>> [1, 2, 3, 4, 5, 6, 7, 8, 9] # find(sub[, start[, end]]) # ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ฐพ์ผ๋ ค ํ๋ ๊ฐ์ `index`๋ฅผ ๋ฐํ ํด์ค๋ค. # ex) a = 'hello' a.find('o') # find ํจ์ >>> 4
โ
-
index() VS find()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
## ๊ณตํต์ # ๋ ํจ์ ๋ชจ๋ ์ฐพ์ผ๋ ค ํ๋ ๊ฐ์ `index`๋ฅผ ๋ฐํ ํด์ค๋ค. # ex) >>> 'oxoxoxoxox'.find('x') # find ํจ์ 1 >>> 'oxoxoxoxox'.index('x') # index ํจ์ 1 # ๋ฌธ์ 'o'๊ฐ ์ฒซ๋ฒ์งธ ์์นํ ์๋ฆฌ๋ฅผ ์ถ๋ ฅ >>> a = 'hello' >>> a.find('o') # find ํจ์ 4 >>> a.index('o') # index ํจ์ 4 # ๋ (value, start, end) ํํ๋ก ๋ฌธ์๋ฅผ ์ฐพ๋ ์์์ ๊ณผ ์ข ๋ฃ์ ์ ์ง์ ํ ์ ์๋ค. # ๋ฌธ์์ด์ค 2๋ฒ์งธ ์์น๋ถํฐ ์ฒ์ 'x'๊ฐ ์์นํ ์๋ฆฌ >>> 'oxoxoxoxox'.index('x', 2) 3 # a๋ณ์์์ 1๋ฒ์งธ~3๋ฒ์งธ ์ฌ์ด์ ๋ฌธ์ 'o'๊ฐ ์์นํ ์๋ฆฌ >>> a = 'hello' >>> a.find('o', 1, 3) -1 # findํจ์๋ ์ฐพ๋ ๊ฐ์ด ์์ ๋ -1์ ์ถ๋ ฅํ๋ค. ์ด๊ฒ ์ฐจ์ด์ . ## ์ฐจ์ด์ # ์ฐพ์ผ๋ ค๋ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ find()๋ '-1'์ ๋ฐํ / index()๋ 'ValueError' ๋ฐํ
โ
-
deque
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# deque๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ๋ณํ(ex. pop() ...)ํ๋ฉฐ ์ฝ๋ฉํ ๋ # ์๋๊ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ค. # ์ฃผ๋ก popleft()๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ ์ฉํ ๊ธฐ๋ฅ์ด ๋ ์๋ค. ## 1. rotate from collections import deque q = deque([1,2,3,4,5,6]) q.rotate(3) print(q) # deque([4, 5, 6, 1, 2, 3]) # ์ฃผ๋ก ๋ฆฌ์คํธ์ ๋์ด ๋ถ์ด ์๋ ์์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ํธ๋ฆฌํ๋ค. # ๋ค๋ง ์๋๊ฐ ์ด๋ค์ง๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค. ## 2. deque๋ ์ฌ๋ผ์ด์ฑ์ด ๋์ง ์๋๋ค. # ๊ตณ์ด ํด์ผ ํ๋ค๋ฉด ์๋๋ฅผ ์ฐธ๊ณ deque_slice = collections.deque(itertools.islice(my_deque, 10, 20)) # deque๋ # index()๋ '์ฌ์ฉ๊ฐ๋ฅ'ํ๊ณ find()๋ '์ฌ์ฉ๋ถ๊ฐ'ํ๋ค.
โ
-
q[len(q)-1] VS q[-1] ์๋ ๋น๊ต
1 2 3 4 5 6 7 8 9
import time start = time.time() # ์์ ์๊ฐ ์ ์ฅ ... ... print("time :", time.time() - start) # ํ์ฌ์๊ฐ - ์์์๊ฐ = ์คํ ์๊ฐ # q[len(q)-1] VS q[-1] ์๋ ๋น๊ต # q[len(q)-1] ์ด ๋ ๋น ๋ฆ. # ์..?
โ
-
isalpha(), isdigit()
1
# ์ํ๋ฒณ์ด๋?, ์ซ์ํ์ด๋? ๋ฅผ ์ฐธ, ๊ฑฐ์ง ํํ๋ก ๋ฐํ
โ
-
sys.setrecursionlimit(์ต๋ ์ฌ๊ท ๊น์ด ์ค์ )
1 2 3
# ์ต๋ ์ฌ๊ท ๊น์ด๋ฅผ ๋๋ฆฌ๋ ค๋ฉด sys ๋ชจ๋์ setrecursionlimit ํจ์๋ฅผ ์ฌ์ฉ # (๊ธฐ๋ณธ๊ฐ์ด์์ผ๋ก ์ํด์ฃผ๋ฉด ๋ฐํ์์๋ฌ๋ก ์ฒ๋ฆฌ๋๋ค.) โป๊ธฐ๋ณธ๊ฐ:1000 sys.setrecursionlimit(50000)
โ
-
sorted()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
sorted๋ ์ฌ๋ฌ ๊ทธ๋ฃน์ ๊ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ ## ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐ์ ๋น๊ตํด ์ค๋ค. # ex) A = [(1,2,1), (1,2,2,3), (1,1,3), (1,1,2)] A = sorted(A) print(A) # [(1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2, 3)] ## ๋ง์ฝ ์ฃผ์ด์ง ๋๋ฒ์งธ ์ธ์๋ค์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด? A = [(0, 4), (2, 2), (1, 2), (1, -1), (3, 3)] B = sorted(A, key=lambda L: L[1]) print(B) # [(1, -1), (2, 2), (1, 2), (3, 3), (0, 4)] ## ๋๋ฒ์งธ ์ธ์ ์ฐ์ ๊ธฐ์ค ํ ์ฒซ๋ฒ์งธ ์ธ์ ๊ธฐ์ค ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด? A = [(0, 4), (2, 2), (1, 2), (1, -1), (3, 3)] B = sorted(A, key=lambda L: (L[1], L[0])) print(B) # [(1, -1), (1, 2), (2, 2), (3, 3), (0, 4)] ## set์๋ฃํ์ sorted ํ๋ฉด ์๋์ผ๋ก list type์ผ๋ก ๋ณํ๋๋ค. a = {"a","b","C"} print("a์ ํ์ : ",type(a)) # a์ ํ์ : <class 'set'> b = sorted(a) print("b์ ํ์ : ", type(b)) # b์ ํ์ : <class 'list'>
โ
-
from collections import Counter
์ฃผ์ด์ง๋ ์ปจํ ์ด๋(ex ๋ฆฌ์คํธ ์๋ฃํ, string)์ ๋์ผํ ๊ฐ์ ๊ฐฏ์๋ฅผ ํ์
1 2 3 4 5 6
from collections import Counter MoResult = Counter([7, 1, 2, 5, 1, 8, 7, 6]).most_common() print(MoResult) #[(7, 2), (1, 2), (2, 1), (5, 1), (8, 1), (6, 1)] # .most_common() ํจ์ # ์ ๋ ฅ๋ ์ธ์๋ค์ '์์'๋ฅผ ์กด์คํ๋ฉด์, '์ค๋ณต countํด์ค'๊ณผ ๋์์ '์ค๋ณต ์ญ์ '๊น์ง ์งํ.
โ
-
import sys
๋น ๋ฅธ ์๋๋ก ์ ๋ ฅ๋ฐ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
1 2 3 4 5 6 7 8 9 10 11
imput VS sys.stdin.readline() # python์ ๋ํ์ ์ธ ์ ๋ ฅ ํจ์ imput() # ๋จ, ๋ฐฑ์ค์๋ ๋ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ด ์ด๊ธฐ์ ์ค๋ช ๋์ด์๋ค. import sys sys.stdin.readline() # ๋จ ์์ ๊ฐ์ด ์ ๋ ฅ ๋ฐ์ ๊ฒฝ์ฐ, ๋ง์ง๋ง์ ๊ฐํ ๋ฌธ์๊น์ง ์ ๋ ฅ๋์ด ๋ค์ # ์ถ๊ฐ ํจ์(rstrip())๋ฅผ ๋ถ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ณดํต์ด๋ค.
โ
-
์ ๊ทํํ์
- ์ผ๋์ผ ๋งค์นญ๋๋ ๋ฌธ์
์ ๊ทํํ์ ์์์, ๋ฐ๋ก ๋ค์ ์ ์์ ์ค๋ช ํ๋ ๋ฉํ๋ฌธ์๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฌธ์ ํ๋๋ ์ผ๋ฐ ๋ฌธ์์ด ํ๋์ ๋งค์นญ๋๋ค. ์๋ฅผ ๋ค์ด,
a
๋ a์ ๋งค์นญ๋๊ณ ,๊ฐ
๋ โ๊ฐโ์ ๋งค์นญ๋๋ ์์ด๋ค. ๋น์ฐํa
๊ฐ โbโ ๋๋ โ๊ฐโ์ ๋งค์นญ๋์ง๋ ์๋๋ค.์ด๋ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ๊ทํํ์์ด๋ ๋ฉํ๋ฌธ์(ํน์ํ ๊ธฐ๋ฅ์ ํ๋ ๋ฌธ์)๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค.
ํ์ด์ฌ re ๋ชจ๋์ ๋ฉํ๋ฌธ์๋ ์ด 12๊ฐ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค.
$()*+.?[^{|
์ด๋ค ๋ฉํ๋ฌธ์๋ ๊ฐ๊ฐ์ ๋ฌธ์ ํ๋์ ๋งค์นญ๋์ง ์๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ฐ ๋ฌธ์์ธ
a
๋ ๋ฌธ์โaโ
์ ๋งค์นญํ์ง๋ง, ์ฌ๋ ์๊ดํธ(
๋ ๋ฌธ์โ(โ
์ ๋งค์นญํ์ง ์๋๋ค.๊ทธ๋ผ ์ฐพ๊ณ ์ ํ๋ ๋ฌธ์์ด์ ์๊ดํธ๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ํ ๊น?
์์ ๋ฌธ์๋ค์ ์์ ๋ฐฑ์ฌ๋์
\
๋ฅผ ๋ถ์ฌ ์ฃผ๋ฉด ์ผ๋ฐ ๋ฌธ์์ฒ๋ผ ํ ๊ธ์์ ๋งค์นญ๋๋ค.์๋ฅผ ๋ค์ด
\(
๋ ๋ฌธ์โ(โ
์ ๋งค์นญ๋๋ค. -
find(์ฐพ์๋ฌธ์, ์ฐพ๊ธฐ์์ํ ์์น) - ์ฐพ๋ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
1 2 3 4
s = '๊ฐ๋๋ค๋ผ ๋ง๋ฐ์ฌ์ ์์ฐจ๋งํ ํํ' print(s.find('๋ง')) # s์์ ์ฒซ'๋ง'์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ print(s.find('๋ง', 3)) # s[3:]๋ถํฐ ์ฒซ'๋ง'์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ (์ ์ฒด ๋ฒ์ ๊ธฐ์ค) print(s.find('๊ฐ', 2)) # s[2:]๋ถํฐ ์ฒซ'๊ฐ'์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ (์์ผ๋ฉด -1 ๋ฐํ)
1 2 3
5 5 -1
โ
-
startsWith(์ฐพ์๋ฌธ์, ์ฐพ๊ธฐ์์์์น, ์ฐพ๊ธฐ์ข ๋ฃ์์น)
1 2 3 4
str = "this is string"; print(str.startswith('this')) # str๋งจ์์ด 'this'๋ก์์ํ๋์ง ๊ฒ์ฌ print(str.startswith('is', 2, 4)) # str[2:4]์์ ๋งจ์์ด 'is'์ธ์ง ๊ฒ์ฌ print(str.startswith('this', 3, 4)) # str[3:4]์์ ๋งจ์์ด 'this'์ธ์ง ๊ฒ์ฌ
1 2 3
True True False
โ
-
import itertools (ํจ์จ์ ์ธ ๋ฐ๋ณต์ ์ํ ํจ์)
-
permutations(์๋ฃ, ๋ง๋ค์์ด๊ธธ์ด)
n๊ฐ์ ์์๋ฅผ ์ฌ์ฉํด์ ์์๋ฅผ ์ ํ์ฌ r๊ฐ์ ๋ฐฐ์ด๋ก ๋ํ๋ด๋ ๊ฒ => ์์ด ๊ณต์ : nPr = n!/(n-r)!
1 2 3 4 5 6 7 8 9
import itertools a = [1,2,3] permute = itertools.permutations(a,2) print(list(permute)) a = "abc" permute = itertools.permutations(a,2) print(list(permute))
1 2
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)] [('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
โ
-
combinations(์กฐํฉ)
n๊ฐ์ ์์๋ฅผ ์ฌ์ฉํด์ ์์์ ๊ด๊ณ์์ด r๊ฐ์ ๋ฐฐ์ด๋ก ๋ํ๋ด๋ ๊ฒ => ์กฐํฉ ๊ณต์ : nCr=nPr/r!
1 2 3 4 5 6 7 8 9
import itertools a = [1,2,3] permute = itertools.combinations(a, 2) print(list(permute)) a = "abc" permute = itertools.combinations(a, 2) print(list(permute))
1 2
[(1, 2), (1, 3), (2, 3)] [('a', 'b'), ('a', 'c'), ('b', 'c')]
-