람다함수란 ? 일반함수를 굳이 def ~ return으로 선언하지 않고 가볍게 만들 수 있는 연산함수
# 예를 들어
def is_even(x):
if x % 2 == 0:
return True
return False
# 아래처럼 람다함수로 변환 가능
is_even = lambda x : x % 2 == 0
# 사용 법은 둘 다
is_even(1)
is_even(2) ...
lambda & map함수
람다함수는 map함수랑 짝지어서 자주 사용됨 !
map함수는 리스트나, 튜플에 어떠한 처리를 할 때 사용하는 함수로
map(함수, 리스트) 식으로 첫번째 인자에는 함수, 두번째 인자에는 리스트(or튜플)를 받음
# 흔히 공백으로 이루어진 숫자리스트를 인풋 받을 때 아래와 같이 받는데
number_list = list(map(int, input().split()))
# 공백기준으로 나누어 받은 친구들을 int함수로 숫자화 시키고(인풋값은 스트링으로 오기 때문) 그 바깥에서 한 번 더 list화 시킨다는 의미!
즉 첫번째 인자인 함수가 두번째 인자로 들어온 리스트나, 튜플에 특정한 처리를 하고 그 처리된 값을 리턴시켜줌
# 만약 모든 값을 *2해주는 함수를 만든다고 치면
# 일반함수
def 곱하기_2(x):
return x * 2
ans1 = list(map(곱하기_2, [1,2,3,4,5,6,7,8,9,10]))
print(ans1)
# 람다 적용
ans2 = list(map((lambda x: x*2), [1,2,3,4,5,6,7,8,9,10]))
print(ans2)
lambda & sort함수
람다는 sort함수에서 key값으로도 자주 사용됨!
# 요소들의 길이 기준으로 정렬하고 싶을 때
data_list = ['길이', '가', '다릅니다', '맞죠']
data_list.sort(key=lambda x : len(x))
print(data_list)
# ['가', '길이', '맞죠', '다릅니다']
# list안에 2개의 요소가 있을 때 두번째 요소 기준으로 정렬하고 싶을 때
data_list = [[-20, 15], [-14, -5], [-18, -13], [-5, -3]]
data_list.sort(key=lambda x : x[1])
print(data_list)
# [[-18, -13], [-14, -5], [-5, -3], [-20, 15]]
# list안에 2개의 요소가 있을 때 우선 첫 번째 인자를 기준으로 오름차순 정렬하고, 같을 시 두번째 인자 기준으로 내림차순 정렬하고 싶을 때
data_list = [[1,3], [0,1], [1,5], [1,4], [1,3], [2,4]]
data_list.sort(key=lambda x : (x[0], -x[1]))
print(data_list)
# [[0, 1], [1, 5], [1, 4], [1, 3], [1, 3], [2, 4]]
lambda & filter 함수
filter함수는 filter(함수, 리스트)로 이루어지는데 리스트의 요소들을 하나씩 함수에 넣어서 True인 경우만 걸러서 새로운 리턴값을 생성해준다고 생각하면 됨
# 짝수만 거르는 경우
# 일반 함수
def is_even(x):
return x % 2 == 0
result1 = list(filter(is_even), range(10))
# 람다 함수
result2 = list(filter(lambda x : x % 2 == 0, range(10)))
'알고리즘 공부💥 > 본연의 알고리듬' 카테고리의 다른 글
[알고리듬] JS 기본 Method 복습하기 (0) | 2022.02.19 |
---|---|
[알고리듬] python 기본 method 복습하기 (0) | 2022.02.19 |
[알고리듬] 파이썬 라이브러리 deque (0) | 2021.09.24 |
[알고리듬] 파이썬 라이브러리 defaultdict (0) | 2021.09.24 |
[알고리듬] 파이썬 라이브러리 Counter (0) | 2021.09.24 |