- 파이썬 스타일의 코딩 기법
- 특유의 문법으로 코드를 효율적으로 표현
xxxx.split() # 빈칸을 기준으로 문자열 나누기, ()괄호 안에 "," "." 등을 넣어 기준값을 지정
" ".join(list) # 리스트를 " "의 기준값으로 묶음
result = []
for i in range(10):
result.append(i)
👇
result = [i for i in range(10)]
...
result = [i for i in range(10) if i % 2 == 0] # if -> filter의 기능
>>> result = [0, 2, 4, 6, 8]
for i in list_1:
for j in list_2:
...
👇
list_3 = [i + j for i in list_1 for j in list_2]
※ 문장을 2차원 리스트로 만들기
words = 'xxxxx'.split()
new_list = [[i.upper(), i.lower(), len(i)]for i in words]
enumerate : 리스트를 추출할 때 번호와 같이 추출
for i, v in enumerate(['a','b','c']):
print(i, v)
>>>
0 a
1 b
2 c
zip : 두 개의 리스트 값을 병렬적으로 추출
A = (100, 90, 80)
B = (80, 50, 75)
C = (90, 80, 70)
[sum(value) / 3 for value in zip(A, B, C)]
>>>
[90.0, 73.33333333333333, 75.0]
lambda function : 함수의 이름 없이 함수처럼 쓸 수 있는 익명 함수
def f(x, y):
return x + y
print(f(2,3))
👇
f = lambda x, y : x + y
print(f(2,3))
(lambda x, y : x + y)(10, 50)으로도 표현 가능
- 문법, 테스트, 해석 등이 어려워서 권장하지 않지만 많이 씀
map function : 리스트에 각각 적용해줌
ex = [1, 2, 3, 4, 5]
f = lambda x : x + 5
print(list(map(f, ex))
>>>
[6, 7, 8, 9, 10]
reduce function : map과 달리 리스트에 똑같은 함수를 적용해서 통합 (차례대로 계산하면서 통합)
from functools import reduce
print(reduce(lambda x, y : x + y, [1,2,3,4,5]))
>>>
15
📌 lambda & map & reduce는 간단한 코드로 다양한 기능 제공하지만 직관성이 떨어져서 권장하지 않음 (하지만 여전히 다양한 머신러닝 코드에서 사용 중 -> 알아둬야함!)
Sequence형 자료형에서 데이터를 순서대로 추츨하는 object
내부적 으로 __iter__
와 __next__
가 사용됨
memory_address = iter(a_list) # 메모리 주소를 가져옴
next(memory_address)
next(memory_address)
next(memory_address) # 다음 칸의 메모리 주소를 이동
generator : literable object를 특수한 형태로 사용해주는 함수
element가 사용되는 시점에 값을 메모리에 반환
-> yield를 사용해 한번에 하나의 element만 반환
-> 용량이 줄어들음
📌 generator을 언제 쓰는가
1) keywords arguments
function(y = 3, x = 1, z = 6)
2) default arguments
def function(var_x, var_y = 3):
return var_x + var_y
function(3) = 6
-> y를 입력하지 않으면 default로 실행3) variable-length arguments (가변 인자)
variable-length
def function(a, b, *args):
return a + b + sum(args)
print(function(1, 2, 3, 4, 5)) # args는 튜플로 들어감
keywords variable-length
def function(**kargs):
print(kargs)
function(first = 1, second = 2, third = 3)
📌 순서 : default -> variable-length -> keywords variable-length
※ Asterisk(*)의 다른 기능 : unpacking ex) print(*["1","2","3"])
[부스트캠프 AI Tech] Week 1 - Day 2