내가 보려고 만든 꼭 필요한 함수들
all([1,2,3,0])
False
all([]), all([""])
(True, False)
chr(97), chr(44032)
('a', '가')
ord("a"), ord("함")
(97, 54632)
divmod(7, 3)
(2, 1)
a,b = 10,12
eval('a+b')
22
a = list(filter(lambda x: x>0, [1,-3,0,2,-4,5]))
a
[1, 2, 5]
n16 = "1A" # 16진수
n2 = "111" # 2진수
int(n2,2), int(n16,16)
(7, 26)
lst1 = [1,2,3]
lst2 = ["a","b","c"]
list(zip(lst1,lst2))
[(1, 'a'), (2, 'b'), (3, 'c')]
list(zip("abcd","가나다라"))
[('a', '가'), ('b', '나'), ('c', '다'), ('d', '라')]
day_1 = datetime.date(2022,5,9)
day_2 = datetime.date(2014,12,5)
# timedelta 객체
diff = day_1-day_2
diff
datetime.timedelta(days=2712)
# 이 객체에서 필요한 데이터 들을 불러 올 수 있다.
# days, seconds, minutes, hours, weeks, 등
diff.days
2712
datetime.date.today()-diff
datetime.date(2014, 12, 5)
# 0 이 월요일, 6이 일요일이다.
day_1.weekday(), day_2.weekday()
(0, 4)
# 1이 월요일, 7이 일요일이다.
day_1.isoweekday(), day_2.isoweekday()
(1, 5)
import calendar
calendar.isleap(2022)
False
from collections import deque
a = [1,2,3,4,5,6]
q = deque(a)
q.rotate(2)
q
deque([5, 6, 1, 2, 3, 4])
q.appendleft(100)
q
deque([100, 5, 6, 1, 2, 3, 4])
q.append(100)
q
deque([100, 5, 6, 1, 2, 3, 4, 100])
q.pop()
100
q.popleft()
100
from collections import Counter
# 각 요소를 딕셔너리로 개수를 출력
Counter('hello world')
Counter({'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
word = ["고민수", "고민수","이승원","이승원","이주비","이주비","이민영","이승원"]
Counter(word)
Counter({'고민수': 2, '이승원': 3, '이주비': 2, '이민영': 1})
# 가장 많은 순서로
Counter(word).most_common()
[('이승원', 3), ('고민수', 2), ('이주비', 2), ('이민영', 1)]
from collections import defaultdict
# 초기값 int
text = "Life is too short, You need python."
d = defaultdict(int)
for i in text:
d[i]+=1
d
defaultdict(int,
{'L': 1,
'i': 2,
'f': 1,
'e': 3,
' ': 6,
's': 2,
't': 3,
'o': 5,
'h': 2,
'r': 1,
',': 1,
'Y': 1,
'u': 1,
'n': 2,
'd': 1,
'p': 1,
'y': 1,
'.': 1})
# 초기값 list
text = "Life is too short, You need python."
d = defaultdict(list)
for i in text:
d[i].append("뀨")
dict(d)
{'L': ['뀨'],
'i': ['뀨', '뀨'],
'f': ['뀨'],
'e': ['뀨', '뀨', '뀨'],
' ': ['뀨', '뀨', '뀨', '뀨', '뀨', '뀨'],
's': ['뀨', '뀨'],
't': ['뀨', '뀨', '뀨'],
'o': ['뀨', '뀨', '뀨', '뀨', '뀨'],
'h': ['뀨', '뀨'],
'r': ['뀨'],
',': ['뀨'],
'Y': ['뀨'],
'u': ['뀨'],
'n': ['뀨', '뀨'],
'd': ['뀨'],
'p': ['뀨'],
'y': ['뀨'],
'.': ['뀨']}
import numpy as np
# 데이터 생성
speed = random.sample( list(np.linspace(10,15,30)), 10)
idx = range(10)
data = list(zip(speed,idx))
data
[(10.517241379310345, 0),
(14.310344827586206, 1),
(13.275862068965518, 2),
(11.379310344827587, 3),
(12.758620689655173, 4),
(10.0, 5),
(14.482758620689655, 6),
(11.206896551724139, 7),
(11.89655172413793, 8),
(11.724137931034482, 9)]
import heapq
# 데이터를 가장 작은 데이터 3개 출력
heapq.nsmallest(3,data)
[(10.0, 7), (10.344827586206897, 3), (11.551724137931036, 6)]
# 데이터를 가장 큰 데이터 3개 출력
heapq.nlargest(3,data)
[(15.0, 0), (14.655172413793103, 2), (13.620689655172415, 5)]
import bisect
speed
[10.517241379310345,
14.310344827586206,
13.275862068965518,
11.379310344827587,
12.758620689655173,
10.0,
14.482758620689655,
11.206896551724139,
11.89655172413793,
11.724137931034482]
# 지정한 기준점으로 분류해줌
result = []
for i in speed:
pos = bisect.bisect_left([11,12,13,14], i)
grade = "ABCDE"[pos]
result.append(grade)
result
['A', 'E', 'D', 'B', 'C', 'A', 'E', 'B', 'B', 'B']
result = []
for i in speed:
pos = bisect.bisect_left([11,12,13,14], i)
grade = ["A등급","B등급","C등급","D등급","E등급"][pos]
result.append(grade)
result
['A등급', 'E등급', 'D등급', 'B등급', 'C등급', 'A등급', 'E등급', 'B등급', 'B등급', 'B등급']
from enum import IntEnum
# 집합 객체 지정
class Week(IntEnum):
a = 1
b = 2
c = 3
d = 4
e = 5
print(Week.a.value)
print(Week.a.name)
1
a
# 반복 또한 가능하다.
for week in Week:
print(week.name, week.value)
a 1
b 2
c 3
d 4
e 5
import itertools
pool = itertools.cycle([1,2,3])
for i in range(10):
print(next(pool))
1
2
3
1
2
3
1
2
3
1
lst = [1,2,3,4,5,6,7,8,9,10]
list(itertools.accumulate(lst))
[1, 3, 6, 10, 15, 21, 28, 36, 45, 55]
old_x 와 y 를 계산하여 new_x 를 만든다.
import functools
data = [1,2,3,4,5]
functools.reduce(lambda x,y: x+y, data)
15
((((1+2)+3)+4)+5)
from operator import itemgetter
data = [
["가", 20, 'C'],
["나", 10, 'B'],
["다", 30, 'A'],
]
sorted(data, key=itemgetter(0))
[['가', 20, 'C'], ['나', 10, 'B'], ['다', 30, 'A']]
sorted(data, key=itemgetter(1),reverse=True)
[['다', 30, 'A'], ['가', 20, 'C'], ['나', 10, 'B']]
sorted(data, key=itemgetter(2))
[['다', 30, 'A'], ['나', 10, 'B'], ['가', 20, 'C']]
import os
os.listdir("data")
['sheet1.xlsx', 'sheet2.xlsx']
import glob
# 해당 경로의 데이터
for file in glob.glob("data/*.xlsx"):
print(file)
data\sheet1.xlsx
data\sheet2.xlsx
# 하위 폴더를 포함한 데이터
for file in glob.glob("**/*.xlsx"):
print(file)
data\sheet1.xlsx
data\sheet2.xlsx
data2\sheet3.xlsx