[Python] 4. 함수
반복적 수행을 해야하는 경우 유용하게 사용
def 함수명(매개변수):
소스코드
return 반환 값 # return 은 없어도 된다.
def add(a, b):
return a + b
def add(a, b, sub=False): # 매개변수의 Default를 설정 가능
if sub is True:
return a - b
return a + b
print(add(3, 5))
>>> 8
print(add(5, 3, True))
>>> 2
람다 표현식(Lambda Express)
함수를 매우 간단하게 작성, 적용 가능
주로 정렬 기준을 설정할때 매우 유용하게 쓰인다.
lambda 인자 : 표현식
# x[0] 기준으로 정렬
li.sort(key=lambda x: x[0])
# add함수
print((lambda a, b: a+b)(3, 7))
>>> 10
map()
map(함수, 리스트)
print(list(map(lambda x: x ** 2, range(5)))
>>> [0, 1, 4, 9, 16]
reduce()
# python 3부터 내장함수에서 제외됨
# 따라서 import를 해야 함. 코테에서 못 쓰게 할 수도 있으니 알아만 두자
from functools import reduce
reduce(함수, 리스트, 초기값=None) # 누적 함
result = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 100)
print(result) # 100 + ((((1+2)+3)+4)+5) = 115
>>> 115
answer = reduce(lambda x, y: y + x, 'abcde')
print(answer) # ((((e+d)+c)+b)+a)
>>> 'edcba'
누적을 통해 연산한다
기본 개념을 정확히 이해하자
func = lambda a, b: a if a > b else b
result = reduce(func, [1, 100, 2, 55])
print(result) # 최대값을 a에 계속 누적하며 구할 수 있다
>>> 100