My Python Cheatsheet
๐์ฝ๋ฉํ
์คํธ ์ค๋น๋ฅผ ํ๋ฉด์ ํ์ด์ฌ์ ํ์ด์ฌ๋ต๊ฒ ํ์ฉํ๊ธฐ ์ํ ๋ฌธ๋ฒ์ ์ ๋ฆฌํ ๋ฌธ์์ด๋ค.
๊ณต์ฑ
์ ์ ๋ฆฌํ ๊ฒ๋ค์ ์ฎ๊ฒจ๊ฐ๋ฉด์ ์์ ๋ฅผ ๋ง๋ค๊ณ ์์ด ์๊ฐ์ด ๋ ๋๋ง๋ค ์ถ๊ฐํ ์์ ์ด๋ค.
ํ์ดํ
,,๋ ์์ ,,
[2022.02.20] ์ต์ด ์์ฑ [2022.02.21] ๋ด์ฉ ์ถ๊ฐ [2022.02.27] ๋ด์ฉ ์ถ๊ฐ [2022.03.29] ๋ด์ฉ ์ถ๊ฐ
a//b
, a%b
ํ๋ฒ์ ์ถ๋ ฅ a = 11
b = 5
print(*divmod(a,b)) # 2 1
*
: ํจํน ํน์ ์ธํจํน ๊ธฐํธ
์ธ์ ์์์ ํํ, ๋ฆฌ์คํธ ๋ฑ์ ํ์ด์ฃผ๋ ์ญํ (unpacking)์ ํ๋ค.
n
์ง๋ฒ์ 10์ง์๋ก ๋ณ๊ฒฝ, ๋ฌธ์์ด์ ์ซ์๋ก ๋ณ๊ฒฝ base = 2
num = "1011"
print(int(num, base)) # 11
๊ณต์ ๋ฌธ์ : int( )
base์ง๋ฒ์ ์ซ์num์ ์ญ์ง์๋ก ๋ฐ๊ฟ์ ์ถ๋ ฅํด์ค๋ค.
์ด๋ num์ ํ์์ string์ด๋ค. base๋ ์๋ต์ด ๊ฐ๋ฅํ๊ณ , ์๋ต์ string์ int๋ก ๋ฐ๊ฟ์ฃผ๋ ์ญํ ์ ํ๋ค.
๋ณดํต ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ ๊ฐ๋ค. ๋ฐ๋(์ซ์->๋ฌธ์) ๋ str()
์ ์ฌ์ฉํ๋ค.
string1 = "hello"
n = 10
print(string1.ljust(n)) # hello
print(string1.center(n)) # hello
print(string1.rjust(n)) # hello
string1.ljust(n)
: n์นธ๋งํผ์ ๊ณต๋ฐฑ์ ๋๊ณ string1 ์ข์ธก์ ๋ ฌ
tring1.center(n)
: n/2์นธ ์ฌ์ด์์ string1 ์ค์์ ๋ ฌ
string1.rjust(n)
: n์นธ๋งํผ์ ๊ณต๋ฐฑ์ ๋๊ณ string1 ์ฐ์ธก์ ๋ ฌ
string
์์ ํ์ฉํ๊ธฐ import string
print(string.ascii_lowercase) # abcdefghijklmnopqrstuvwxyz
print(string.ascii_uppercase) # ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_letters) # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.digits) # 0123456789
๋ง ๊ทธ๋๋ก ์์, ๊ณ ์ ๋ผ์๋ ๊ฐ์ด๋ค. ํ๋ํ๋ ์ ์ ํ์ ์์ด ๋ถ๋ฌ์ฌ ์ ์๋ค๋ ์ ์ด ํธ๋ฆฌํ๋ค.
testList = [3,5,7,4,8,5,8,10]
print(testList) # [3, 5, 7, 4, 8, 5, 8, 10]
testList.sort() # ์๋ณธ ์ง์ ๋ณ๊ฒฝ
print(sorted(testList)) # ์๋ณธ ์ ์ง, ๋ณดํต ์๋ก์ด ๋ฆฌ์คํธ๋ก ํ ๋นํด์ ์ฌ์ฉ
# ๊ฒฐ๊ณผ๋ [3, 4, 5, 5, 7, 8, 8, 10]๋ก ๋์ผ
๊ณต์๋ฌธ์ : โ sort( ) โ sorted( )
๋ณดํต ์๋ณธ ๋ฆฌ์คํธ๋ฅผ ๋ณด์กดํด์ผ ํ๋ ๊ฒฝ์ฐ๋ sorted(listname)
๋ฅผ ์ฌ์ฉํ๊ณ , ๊ทธ๋ฅ ๋ฐ๊ฟ ๋์๋ listname.sort()
๋ฅผ ์ฌ์ฉํ๋ค.
๊ทผ๋ฐ, sortํ๋ ค๋ ๋ฆฌ์คํธ์ ์๋ฃํ์ด ๋ฌธ์ํ ์ผ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น??
testList1 = ['1', '10', '2', '200', '22', '23', '3', '4']
testList2 = ['1', '10', '2', '200', '22', '23', '3', '4']
print(testList1) # ['1', '10', '2', '200', '22', '23', '3', '4']
print(testList2) # ['1', '10', '2', '200', '22', '23', '3', '4']
testList1.sort() # ๋ฌธ์ํ ์์์ ๋ฌธ์ ์์๋๋ก ์ ๋ ฌ
testList2.sort(key = int) # ๋ฌธ์ํ ์ซ์๋ฅผ ์ซ์๋ก ์ทจ๊ธํ์ฌ ์ ๋ ฌ
print()
print(testList1) # ['1', '10', '2', '200', '22', '23', '3', '4']
print(testList2) # ['1', '2', '3', '4', '10', '22', '23', '200']
๋ฌธ์ํ์ผ๋ก ์ด๋ฃจ์ด์ง ์ซ์๋ ๊ทธ๋ฅ ์ ๋ ฌํ์ ๊ฒฝ์ฐ์๋ testList1
์ฒ๋ผ ์ซ์๋ฅผ ๋ฌธ์์ฒ๋ผ ์๊ฐํ์ฌ ์์๋๋ก ์ ๋ ฌํ๋ค.
testList2
๋ key=int
๋ผ๋ ์ธ์๋ฅผ ํตํด์, ํ๋ํ๋ int์๋ฃํ์ผ๋ก ๋ฐ๊พธ์ง ์๋๋ผ๋ ์ซ์์ฒ๋ผ ์๊ฐํ์ฌ ์ ๋ ฌํ๋ค. key ์ธ์๋ lambda๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. key=int
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ํ๋ํ๋ ๋ฐ๊พธ๋ ๊ฒ์ map()
์ ์ด์ฉํด ๊ตฌํ๊ฐ๋ฅํ๋ค.
testList1 = [10,5,7,8,3]
testList2 = [10,5,7,8,3]
print(testList1) # [10, 5, 7, 8, 3]
print(testList2) # [10, 5, 7, 8, 3]
testList1.reverse() # ๋จ์ ๋ค์ง๊ธฐ
testList2.sort(reverse = True) # ์ญ์์ผ๋ก ์ ๋ ฌํ๊ธฐ(๋ด๋ฆผ์ฐจ์)
print()
print(testList1) # [3, 8, 7, 5, 10]
print(testList2) # [10, 8, 7, 5, 3]
listName.reverse()
๋ ๋ง ๊ทธ๋๋ก ๊ธฐ์กด ๋ฆฌ์คํธ๋ฅผ ๋ค์ง์ด์ ๋ฐฐ์ดํ๋ค.
listName.sort(reverse = True)
๋ ์ ๋ ฌ์ ์ญ์์ผ๋ก ํ ์ ์๋๋ก ํ๋ค. ํ์ง๋ง key=int
๋ ๊ฐ์ด ์ฐ๋๊ฑด ์๋๋ค. ์ ๊ทธ๋ฐ์ง๋ ๋ชจ๋ฆ
map()
ํ์ฉํ๊ธฐ๐งก ์ต์ ํจ์
testList = ["10","5","7","8","3"]
testList2 = [("i","love","you"),("you","love","me")]
map_list = list(map(int,testList))
print(map_list) # [10, 5, 7, 8, 3]
map_list2 = list(map(''.join,testList2))
print(map_list2) #['iloveyou', 'youloveme']
๊ณต์๋ฌธ์ : โ map( )
list(map(func,data))
ํ์์ผ๋ก ๋ง์ด ์ด๋ค. data์๋ ์ํํ ์ ์๋ ๊ฐ์ธ list
, tuple
, dict
๋ฑ์ด ๋ค์ด๊ฐ๋ค.
func์๋ ๊ฐ ๊ฐ์ ์ ์ฉ๋ ํจ์ ์ด๋ฆ์ ์ด๋ค. ()์ฐ๋ฉด ์๋๋ค
list๋ฅผ ์ ์์ฐ๋ฉด map ๊ฐ์ฒด๋ผ๋ ๊ฒ์ผ๋ก ๋ฐํ์ด ๋๋๋ฐ, ์ด๊ฑฐ๋ ์ด๋์ ๋ญ ์ธ๋ชจ๋ ์๋ ๊ฐ์ฒด๋ผ ๊ผญ list()
, tuple()
๋ฑ ๋ด์ฅํจ์์ ๋ด์์ผ ํ๋ค.
zip()
์ฌ์ฉํ๊ธฐ a = [1,2,3]
b = ['a','b','c']
print(list(zip(a,b))) # [(1, 'a'), (2, 'b'), (3, 'c')]
print(dict(zip(a,b))) # {1: 'a', 2: 'b', 3: 'c'}
๊ณต์๋ฌธ์ : โ zip( )
๊ทธ๋ฅ ์ฌ์ฉํ ๊ฒฝ์ฐ map()
์ฒ๋ผ zip๊ฐ์ฒด ํ์์ผ๋ก ๋ฐํ๋๊ธฐ ๋๋ฌธ์ list()
, dict()
๋ฑ์ผ๋ก ๋ฌถ์ด์ ์ฌ์ฉํด์ผ ํ๋ค.
ํนํ ๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ ํ์์ผ๋ก ํฉ์น ๋ for
๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๊ฐํธํ๊ฒ ํด๊ฒฐ๊ฐ๋ฅํ๋ค.
๋ ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ค๋ฉด, ์งง์ ๋ฆฌ์คํธ ๊ธฐ์ค์ผ๋ก zip ํ ๋จ์ ๋ฆฌ์คํธ๋ ๋ฒ๋ฆฐ๋ค.
zip()
ํด์ฒดํ๊ธฐ a = [1,2,3]
b = ['a','b','c']
zip_a_and_b = list(zip(a,b)) # [(1, 'a'), (2, 'b'), (3, 'c')]
unzip_a, unzip_b = list(zip(*zip_a_and_b))
print(unzip_a, unzip_b) # (1, 2, 3) ('a', 'b', 'c')
์ธํจํน ๊ธฐํธ์ธ *
์ ํ์ฉํด์ unzip์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฌ๋ฉด ํ๋์ ๋ฆฌ์คํธ๋ฅผ zipํ์์ผ๋ก ๋ฌถ๋ ๋ฐฉ๋ฒ ์ ๋ฌด์์ผ๊น???
zip()
๊ตฌํํ๊ธฐ a = [1,2,3,4,5,6]
for i, j in zip(a,a[1:]) :
print(i, j)
๊ฒฐ๊ณผ
1 2
2 3
3 4
4 5
5 6
i์ j์ ๊ฐ๊ฐ 1~5์ 2~6๊น์ง ๊ฐ๊ฐ ํ ๋น์ด ๊ฐ๋ฅํ ๋ชจ์ต์ด๋ค. ์์ง๊น์ง ์จ ๋ณธ ์ ์ ์์ง๋ง..?..
a = ['I','hate','paprika']
a_join = ''.join(a)
print(a_join) # Ihatepaprika
์ ๋ง์ ๋ง์ ๋ง ๋ง์ด ์ด๋ค.
list์ ์์๋ฅผ ํ๋๋ก ์ด์ด๋ถ์ธ๋ค. ์ด์ค ''
๋ sep๋ฌธ์์ด๊ณ ์์๊ฐ ๋ฌธ์ ํ์์ผ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
a = [456,789]
print('abc'*10) # abcabcabcabcabcabcabcabcabcabc
print(a*5) # [456, 789, 456, 789, 456, 789, 456, 789, 456, 789]
*
๋ฌธ์๋ ๊ธฐ๋ฅ์ด ์ฐธ ๋ง๋ค,, ์ด๊ฑฐ๋ ์์ ํจํน/์ธํจํน ๊ธฐ๋ฅ๋ณด๋ค๋ ์ฐ์ฐ์๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ผ๋ฐ ๋ฌธ์์ด์ ์ฌ์ฉํ๋ฉด ๊ณฑํ๊ธฐ nํ ๊ธฐ๋ฅ์ผ๋ก, ๋ฌธ์์ด์ n๋ฒ ๋ฐ๋ณตํ๋ค.
๋ฆฌ์คํธ์ ๋ฃ์ผ๋ฉด ๋ด๋ถ ๊ฐ์ด ๋ณํ๋๊ฒ ์๋๋ผ ๋ฆฌ์คํธ์ ์์๊ฐ ๋ฐ๋ณต๋๋ค.
numpy
< itertools
< list comprension
< sum()
์์ผ๋ก ์งง๋ค. ์๊ฐ์ด ์งง์์๋ก ์ข์ ์ฝ๋์ด๋ค.sum()
ํจ์ ์ฌ์ฉํ๊ธฐ mylist = [[1,2,3], [100,200,300], [10,20,30]]
print(sum(mylist, [])) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
๊ณต์ ๋ฌธ์ : โ sum( )
sum()
์ ํตํด ํ๊ฒน์ฉ ๋ฒ๊ฒจ๋ด๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ฐ๋จํ์ง๋ง ์๋๊ฐ ์ ์ผ ๋๋ ค ์ถ์ฒํ์ง ์๋ ๋ฐฉ๋ฒ์ด๋ค.
chain
์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ import itertools
mylist = [[1,2,3], [100,200,300], [10,20,30]]
print(list(itertools.chain.from_iterable(mylist))) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
print(list(itertools.chain(*mylist))) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
๊ณต์๋ฌธ์ : โ itertools โ chain()
itertools
์์ ์ ๊ณตํ๋ chain()
์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. chain()
์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์๋ก ๋ฆฌ์คํธ๋ ํํ ๋ฑ์ ์ฌ๋ฌ๊ฐ ์ฃผ๋ฉด ๊ทธ๊ฑธ ํ๋๋ก ์ด์ด์ค๋ค. ํ์ง๋ง ๋ค์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด, ์ธ์์ ๋ฆฌ์คํธ๋ฅผ *
์ ํตํด ์ธํจํน ํด์ ์ง์ด๋ฃ๊ฑฐ๋, ์ธํจํน ํ์ง ์๊ณ chain.from_iterable()
๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
reduce()
๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ 1 from functools import reduce
mylist = [[1,2,3], [100,200,300], [10,20,30]]
print(list(reduce(lambda x,y : x+y, mylist))) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
๊ณต์๋ฌธ์ : โ functools โreduce( )
reduce()
์์ ๋๋ค์์ ์ฌ์ฉํ์ฌ ๊ตฌํํ์๋ค.
reduce()
๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ 2 from functools import reduce
import operator
mylist = [[1,2,3], [100,200,300], [10,20,30]]
print(list(reduce(operator.add, mylist))) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
๊ณต์๋ฌธ์ : โ operator
์๊น์ ๋์ผํ๊ฒ reduce()
๋ฅผ ์ด์ฉํ์ง๋ง operator.add
๋ผ๋ ๋ง์
์ฐ์ฐ์๋ฅผ ํตํด ์๋ก์ด ๋ฆฌ์คํธ์ ํ๋์ฉ ์์๋ฅผ ๋ํด๊ฐ๋ ๋ฐฉ์์ด๋ค.
List Comprension
์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ mylist = [[1,2,3], [100,200,300], [10,20,30]]
print([element for arr in mylist for element in arr]) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
๊ฝค ๊ฐ๋จํ๋ค. ํ์ง๋ง ๊ฐ์ธ์ ์ผ๋ก ํญ์ ํท๊ฐ๋ฆฌ๋ ๋๋ฅผ ์ํด ์ ๋ฆฌํด๋์..ใ ใ
์ด๊ฑธ ์ผ๋ฐ์ ์ธ for
๋ฌธ์ผ๋ก ํ์ดํด๋ณด๋ฉด,
mylist = [[1,2,3], [100,200,300], [10,20,30]]
element = []
mylist2 = []
for arr in mylist:
for element in arr:
print("element : ", element)
mylist2.append(element)
print(mylist2) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
๊ฒฐ๊ณผ :
element : 1
element : 2
element : 3
element : 100
element : 200
element : 300
element : 10
element : 20
element : 30
[1, 2, 3, 100, 200, 300, 10, 20, 30]
๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
์ ํตํด ์ด์คfor
๋ฌธ์ ํ์ค๋ก ๋ํ๋ผ ์ ์๋ค๋ ์ ์ด ๋งค๋ ฅ์ ์ด๋ค.
numpy
๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ import numpy as np
mylist = [[1,2,3], [100,200,300], [10,20,30]]
print(np.array(mylist).flatten().tolist()) # [1, 2, 3, 100, 200, 300, 10, 20, 30]
๊ณต์ ๋ฌธ์ : โ numpy โ array( ) โ flatten( )
์ด ๋ฐฉ๋ฒ์ [ [A๋ฆฌ์คํธ], [B๋ฆฌ์คํธ] ] ์์ A๋ฆฌ์คํธ์ B๋ฆฌ์คํธ์ ์์์ ๊ธธ์ด๊ฐ ๊ฐ์์ผ ๊ฐ๋ฅํ๋ค.
๊ณต์๋ฌธ์ : โ itertools
import itertools
list2 = ['1','2','3','4'] # ์์๊ฐ str ์ด์ด์ผ ํจ
n = 3
# ๋ชจ๋ ์์๋ก ์์ด ๋ง๋ค๊ธฐ
print("์์ด",list(map(''.join, itertools.permutations(list2))))
# n๊ฐ์ ์์๋ก ์์ด ๋ง๋ค๊ธฐ
print("N-์์ด",list(map(''.join, itertools.permutations(list2, n))))
# ์กฐํฉ
print("์กฐํฉ",list(map(''.join, itertools.combinations(list2, n))))
๊ฒฐ๊ณผ :
๊ณต์๋ฌธ์ : โ collections.Counter
import collections
list2 = 'aaaaaaaaaabcd'
counter = collections.Counter(list2)
print(counter.most_common()) # [('a', 10), ('b', 1), ('c', 1), ('d', 1)]
collections.Counter()
๋ ๋ฐํ๊ฐ์ด counter-dict ๊ฐ์ฒด์ด๋ค. ์ด๊ฑธ most_common
์ ์ฌ์ฉํ๋ฉด , ์ฌ์ฉํ ์ํ๋ฒณ๋ง ๋ฆฌ์คํธ(ํํ) ํํ๋ก ๋ฐํํ๋ค.
for...else
๋ฌธ์ฝ๊ฒ ๋งํ๋ฉด for๋ฌธ์ด break์์ด ์ ๋ง๋ฌด๋ฆฌ ๋์์ ๋ else๋ฌธ์ ํต๊ณผ์ํจ๋ค.
break
๊ฐ ์์ ๋list2 = [1,2,3,4]
for i in list2:
if i >= 4 :
break
print(i)
else :
print("for๋ฌธ์ด ์ ๋ง๋ฌด๋ฆฌ ๋จ")
๊ฒฐ๊ณผ :
break
๊ฐ ์์ ๋ >> else
๋ฌธ ํต๊ณผlist2 = [1,2,3,4]
for i in list2:
#if i >= 4 :
# break
print(i)
else :
print("for๋ฌธ์ด ์ ๋ง๋ฌด๋ฆฌ ๋จ")
๊ฒฐ๊ณผ :
swap
ํ๊ธฐa = 'yu'
b = 'jin'
print(a,b) # yu jin
a,b = b,a
print(a,b) # jin yu
ํ์ด์ฌ์ ์ ๋ง,, ๋ง๋ฒ์ ์ธ์ด๋ค.