๋ฐ์ํ
1. deque
- ์ ์ ์ ์ถ ํ
from collections import deque
deq = deque()
deq.append(1)
deq.appendleft(2)
deq.pop()
deq.popleft()
- deque.append(item): item์ ๋ฐํฌ์ ์ค๋ฅธ์ชฝ ๋์ ์ฝ์
- deque.appendleft(item): item์ ๋ฐํฌ์ ์ผ์ชฝ ๋์ ์ฝ์
- deque.pop(): ๋ฐํฌ์ ์ค๋ฅธ์ชฝ ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์์ ๋ฐํฌ์์ ์ญ์ ํ๋ค.
- deque.popleft(): ๋ฐํฌ์ ์ผ์ชฝ ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์์ ๋ฐํฌ์์ ์ญ์ ํ๋ค.
- deque.remove(item): item์ ๋ฐํฌ์์ ์ฐพ์ ์ญ์ ํ๋ค.
- deque.rotate(num): ๋ฐํฌ๋ฅผ num๋งํผ ํ์ ํ๋ค(์์๋ฉด ์ค๋ฅธ์ชฝ, ์์๋ฉด ์ผ์ชฝ).
2. Counter
from collections import Counter
a =['red', 'blue', 'red', 'green', 'blue', 'blue']
b = [1,2,2,3,3,3,4,4,4,4]
print(Counter(a)) # Counter({'blue': 3, 'red': 2, 'green': 1})
print(Counter(a)['red']) # 2
print(Counter(b)) # Counter({4: 4, 3: 3, 2: 2, 1: 1})
print(Counter(b)[3]) # 3
- Counter(item) : list ๋๋ set์ธ ์ ๋ ฅ์ ๋ฃ์ผ๋ฉด ๊ฐ ํญ๋ชฉ์ key๋ก ๊ฐ์๋ฅผ value๋ก ๋ฆฌํดํด์ค๋ค
- Counter.most_common(item) : item ์ ๋งํผ์ ์์ ์์๋ง ์ถ๋ ฅ
- Counter ๋ผ๋ฆฌ ๋ง์ , ๋บ์ ๊ฐ๋ฅ
- &(๊ต์งํฉ), |(ํฉ์งํฉ) ์ฐ์ฐ ๊ฐ๋ฅ
3. heapq
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ
import heapq
heap = []
heapq.heappush(heap, 4)
heapq.heappush(heap, 1)
heapq.heappush(heap, 7)
heapq.heappush(heap, 3)
print(heap) # [1, 3, 7, 4]
print(heapq.heappop(heap)) # 1
print(heapq.heappop(heap)) # 3
print(heapq.heappop(heap)) # 4
print(heapq.heappop(heap)) # 7
- heapq.heappush(heap, item) : heap ์ item(์์) ์ถ๊ฐ
- heapq.heappop(heap) : heap ์ ๊ฐ์ฅ ์์ ์์๋ฅผ ์ญ์ ํ ๋ฆฌํด
- heapq.heapify(list) : ์ด๋ฏธ ์์๊ฐ ๋ค์ด์๋ ๋ฆฌ์คํธ๋ฅผ ํ์ผ๋ก ๋ฐํ
4. permutations, combinations
- ์์ด๊ณผ ์กฐํฉ
from itertools import permutations
from itertools import combinations
arr = ['A', 'B', 'C']
nPr = permutations(arr, 2)
nCr = combinations(arr, 2)
print(list(nPr)) # [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
print(list(nCr)) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
- permutations(arr,x) : ๋ฆฌ์คํธ arr์์ x๊ฐ๋ฅผ ๊ณจ๋ผ ์์ด์ ๋ฐํ
- combinations(arr,x) : ๋ฆฌ์คํธ arr์์ x๊ฐ๋ฅผ ๊ณจ๋ผ ์กฐํฉ์ ๋ฐํ
5. eval()
a = eval("1+3*5")
b = eval("{'red':3,'blue':4}")
c = eval("[1,2,3]")
print(a,type(a)) # 16 <class 'int'>
print(b,type(b)) # {'red': 3, 'blue': 4} <class 'dict'>
print(c,type(c)) # [1, 2, 3] <class 'list'>
6. re.split()
import re
a = '12+3*4-88'
x = re.split('[+*-]',a)
y = re.split('([+*-])',a)
print(x) # ['12', '3', '4', '88']
print(y) # ['12', '+', '3', '*', '4', '-', '88']
7. ord(), chr()
print(ord('a')) # 97
print(chr(97)) # a
- ord() : ๋ฌธ์ -> ์์คํค์ฝ๋
- chr() : ์์คํค์ฝ๋ -> ๋ฌธ์
8. ์ด์ฐจ์ ๋ฆฌ์คํธ ์ ๋ ฌ
arr = [[2, 1], [3, 4], [1, 2], [1, 3], [3, 2]]
a = sorted(arr, key=lambda n : n[0])
b = sorted(arr, key=lambda n : n[1])
c = sorted(arr, key=lambda n : (n[0],n[1]))
d = sorted(arr, key=lambda n : (n[0],-n[1]))
e = sorted(arr, key=lambda n : (n[1],n[0]))
print(a) # [[1, 2], [1, 3], [2, 1], [3, 4], [3, 2]]
print(b) # [[2, 1], [1, 2], [3, 2], [1, 3], [3, 4]]
print(c) # [[1, 2], [1, 3], [2, 1], [3, 2], [3, 4]]
print(d) # [[1, 3], [1, 2], [2, 1], [3, 4], [3, 2]]
print(e) # [[2, 1], [1, 2], [3, 2], [1, 3], [3, 4]]
lambda ๋ฅผ ์ฐ๋ฉด arr ์ด ์ํํ๋ฉด์ n ์ ํ๋์ฉ ๋ค์ด๊ฐ๋ค๊ณ ์ดํดํ๋ฉด ๋จ
- sorted(arr, key=lambda n : n[0]) : arr์ ์ฒซ ๋ฒ์งธ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
- sorted(arr, key=lambda n : n[1]) : arr์ ๋ ๋ฒ์งธ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
- sorted(arr, key=lambda n : (n[0],n[1])) : arr์ ์ฒซ ๋ฒ์งธ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ, ๋๋ฒ ์งธ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
- sorted(arr, key=lambda n : (n[0],-n[1])) : arr์ ์ฒซ ๋ฒ์งธ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ, ๋๋ฒ ์งธ ๊ฐ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
- sorted(arr, key=lambda n : (n[1],n[0])) : arr์ ๋ ๋ฒ์งธ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ, ์ฒซ๋ฒ ์งธ ๊ฐ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
9. ๋์ ๋๋ฆฌ ์ ๋ ฌ
sorted(iterable,key) ์ด๊ธฐ ๋๋ฌธ์, ๋์ ๋๋ฆฌ๋ฅผ iterable ๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด items() ๋ฉ์๋๋ฅผ ์ฌ์ฉ
dic = {
2: 1,
3: 4,
5: 2,
1: 3,
4: 1
}
print(dic) # {2: 1, 3: 4, 5: 2, 1: 3, 4: 1}
print(dic.items()) # dict_items([(2, 1), (3, 4), (5, 2), (1, 3), (4, 1)])
a = sorted(dic.items(), key=lambda n:n[0]) # key ๊ฐ์ผ๋ก ์ ๋ ฌ
b = sorted(dic.items(), key=lambda n:n[1]) # value ๊ฐ์ผ๋ก ์ ๋ ฌ
print(a) # [(1, 3), (2, 1), (3, 4), (4, 1), (5, 2)]
print(b) # [(2, 1), (4, 1), (5, 2), (1, 3), (3, 4)]
10. ๋ฆฌ์คํธ, ๋ฌธ์์ด ์์ฃผ ์ฌ์ฉํ๋ ๋ฉ์๋
str ='abcDEc'
lst = [3,6,3,8,10]
print(str.find('c')) # 2
print(str.find('f')) # -1
print(str.index('c')) # 2
print(lst.index(3)) # 0
print(str[::-1]) # cEDcba
print(lst[::-1]) # [10, 8, 3, 6, 3]
print(str.upper()) # ABCDEC
print(str.lower()) # abcdec
print(str.replace('c','f')) # abfDEf
print(list(set(str))) # ['E', 'a', 'b', 'D', 'c']
print(''.join(list(set(str)))) # EabDc
print(sorted(''.join(list(set(str))))) # ['D', 'E', 'a', 'b', 'c']
print(''.join(sorted(''.join(list(set(str)))))) # DEabc
print(list(set(lst))) # [8, 10, 3, 6]
print(sorted(list(set(lst)))) # [3, 6, 8, 10]
โถ ๋ฌธ์์ด
- str.find(item) : ๋ฌธ์์ด์ x๊ฐ ๋ช ๋ฒ์งธ index์ ์ฒ์ ์๋์ง ๋ฐํ ์์ผ๋ฉด -1 ๋ฐํ\
- str.upper(), ๋ฌธ์์ด.lower() : ๋ฌธ์์ด ๋๋ฌธ์ํ, ์๋ฌธ์ํ
- str.replace(x,y) : ๋ฌธ์์ด์์ ๋ชจ๋ x๋ฅผ ์ฐพ์์ y๋ก ๋ณ๊ฒฝ
โถ ๋ฆฌ์คํธ
- ''.join(list) : ๋ฆฌ์คํธ ๋ด๋ถ์ ์๋ ๋ฌธ์์ด๋ค์ ๋ชจ๋ ์ฐ๊ฒฐ
โถ ๋ฌธ์์ด or ๋ฆฌ์คํธ
- x.index(item) : ๋ฌธ์์ด ๋๋ ๋ฆฌ์คํธ์ item์ด ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ฒ์ ์๋์ง ๋ฐํ
- x[::-1] : ๋ฌธ์์ด ๋๋ ๋ฆฌ์คํธ ๊ฑฐ๊พธ๋ก ์ถ๋ ฅ
- list(set(x)) : ๋ฌธ์์ด ๋๋ ๋ฆฌ์คํธ์์ ๋ณ๊ฒฝ๋๋ ๊ฐ ์์ ๊ณ ๋ฆฌ์คํธ๋ก ์ ์ฅ
* [::-1] : ๋ฆฌ์คํธ์์ ํ๋ฉด [1,2,3,4] -> [4,3,2,1] ๋๋๋ฐ, [1234] -> [4321] ํด์ฃผ๊ธฐ ์ํด์๋ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ์ ๊ฑฐ๊พธ๋ก ๋ฐ๊ฟ์ฃผ๊ณ ๋ค์ ์ ์๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค
11. set
set1 = {1,2,3,4}
set2 = {3,4,5,6}
set3 = {3,4,5,6,7,8}
print(set1&set2) # ๊ต์งํฉ {3, 4}
print(set1-set2) # ์ฐจ์งํฉ {1, 2}
print(set1|set2) # ํฉ์งํฉ {1, 2, 3, 4, 5, 6}
print(set1.issubset(set2)) # False
print(set2.issubset(set3)) # True
- set1 & set2 : set1๊ณผ set2์ ๊ต์งํฉ ๋ฐํ
- set1 - set2 : set1์์ set2๋ฅผ ๋บ ์ฐจ์งํฉ ๋ฐํ
- set1 | set2 : set1๊ณผ set2์ ํฉ์งํฉ ๋ฐํ
- set1.issubset(set2) : set1์ด set2์ ๋ถ๋ถ ์งํฉ์ธ์ง ๋ฐํ
12. ๋ฌธ์์ด ๊ฒ์
s = 'this is string'
print('is' in s) # True
print(s.find('str')) # 8
print(s.startswith('this')) # True
print(s.endswith('string')) # True
- 'a' in str : str์ 'a'๊ฐ ์๋์ง
- str.startswith(item) : ๋ฌธ์์ด์ด item์ผ๋ก ์์ํ๋์ง ์๋์ง
- str.endswith(item) : ๋ฌธ์์ด์ด item์ผ๋ก ๋๋๋์ง ์๋์ง
os
os.environ['HOME'] # 'HOME' ๋์ ์ ๋ค์ํ ์์คํ
์ ๋ณด๋ค์ด ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
os.environ.get('HOME')
os.path.isfile('filename')
os.path.isdir('dirname')
# path๊ฐ ์กด์ฌํ๋ ์ง ํ์ธ
os.path.exists(path)
# ํ์ฌ ๊ฒฝ๋ก์ folder ์์ฑ
os.mkdir(folder_name)
# ์ง์ ๋ path์ folder ์์ฑํ๋ฉฐ path์ ํฌํจ๋ branch ๊น์ง ์์ฑ
# ์๋ฅผ ๋ค์ด path๊ฐ ./A/B/C ์ด๊ณ B/C๊ฐ ์๋ค๋ฉด ๋ง์ง๋ง C๋ฅผ ์์ฑํ ๋๊น์ง ์ค๊ฐ์ ํ์ํ ํด๋ ๊ณ์ธต์ ๋ชจ๋ ์์ฑํฉ๋๋ค.
# mkdir๊ณผ ์ ์ฌํ์ง๋ง ์ค๊ฐ์ sub directory ๊น์ง ํ๋ฒ์ ๋ง๋ค์ด ์ค๋๋ค.
os.makedirs(path)
# ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํจ
os.path.abspath(os.getcwd())
# ๊ฒฝ๋ก ๋ณ๊ฒฝ
os.chdir(path)
# cmd ๋ช
๋ น์ด ์
๋ ฅ
command = "ls -al"
os.system(command)
# ์์
ํ๊ณ ์๋ ๋๋ ํ ๋ฆฌ ๋ณ๊ฒฝ
os.chdir(path)
# ํ์ฌ ํ๋ก์ธ์ค์ ์์
๋๋ ํ ๋ฆฌ ์ป๊ธฐ
os.getcwd()
# ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ ์ง์ฐ๊ธฐ
os.remove(file_path or path)
# ํ์ผ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ ๋ ๊ฒฝ๋ก๋ก ๋ฐ๊พธ๋ ํจ์
os.path.abspath(file_path)
# ์ฃผ์ด์ง ๊ฒฝ๋ก์ ํ์ผ์ด ์๋์ง ํ์ธํ๋ ํจ์
os.path.exists(file_path)
# ํ์ฌ ๋๋ ํ ๋ฆฌ ์ป๊ธฐ
os.curdir()
# ๋ถ๋ชจ ๋๋ ํ ๋ฆฌ ์ป๊ธฐ
os.pardir()
# ๋๋ ํ ๋ฆฌ ๋ถ๋ฆฌ ๋ฌธ์ ์ป๊ธฐ. . windows๋ \ linux๋ / ๋ฅผ ๋ฐํํฉ๋๋ค.
os.sep()
# ํ์ผ๋ช
๋ง ์ถ์ถ
os.path.basename(file_path)
# ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก ์ถ์ถ
os.path.dirname(file_path)
# ๋ง์ง๋ง ๋๋ ํ ๋ฆฌ ํด๋๋ช
์ถ์ถ
path = "folder_A/folder_B/folder_C/folder_D"
os.path.basename(os.path.normpath(path))
# folder_D
# ๊ฒฝ๋ก์ ํ์ผ๋ช
์ ๋ถ๋ฆฌ
os.path.split(file_path)
# ๋๋ผ์ด๋ธ๋ช
๊ณผ ๋๋จธ์ง ๋ถ๋ฆฌ (MS Windows์ ๊ฒฝ์ฐ)
os.path.splitdrive(file_path)
# ํ์ฅ์์ ๋๋จธ์ง ๋ถ๋ฆฌ
os.path.splitext(file_path)
# ํ์ผ ์ฌ์ด์ฆ ๊ณ์ฐ
MB = 1024 ** 2
GB = 1024 ** 3
# Mega Byte ๋จ์๋ก ํํ
os.path.getsize(file_path) // MB
# Giga Byte ๋จ์๋ก ํํ
os.path.getsize(file_path) // GB
import glob
path = "./*/*.py"
file_list = glob.glob(path)
file_list_py = [file for file in file_list]
# file_list_py = [file for file in file_list if file.endswith(".py")]
print ("file_list_py: {}".format(file_list_py))
๋ฐ์ํ