람다(lambda)
1. 의미
익명함수를 지칭하는 용어
즉, 기존의 함수(명 등)을 선언하고 사용하던 방식과는 달리 바로 정의하여 사용할 수 있는 함수.
그래서 호출하면, 그대로 호출하면 함수 객체가 나온다.사용할 때는 변수에 할당하거나 해줘야 함.
(귀찮은 과정을 생략하고 쉽게 임시로 생성하여 쓰고 버리기 용이한 함수랄까?)
2. 형식
lambda 인자 : 표현식
예시)
add_num = lambda x: x+1
3. 다양한 응용법
3-0. 할당하지 않고 쓰기
람다 표현식을 괄호로 묶은 뒤에 다시 괄호를 붙이고 인수를 넣어 호출
>>>(lambda x: x + 10)(1)
11
3-1. 인자 두 개 쓰기
lambda x,y: x+y
가 가능하다
3-2. if 사용하기
check_pass = lambda x: 'pass' if x>=70 else 'fail'
3-3. 리스트를 정렬할 때 key로 사용(sort, sorted)
1)
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
# key 인자를 정하지 않은 기본적인 sort에선, 튜플 순서대로 우선순위 기본 할당.
b = sorted(a)
# b = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
# key 인자에 함수를 넘겨주면 우선순위가 정해짐.
c = sorted(a, key = lambda x : x[0])
# c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1])
# d = [(3, 0), (5, 1), (0, 1), (1, 2), (5, 2)]
# 비교할 아이템이 요소가 복수 개일 경우, 튜플로 우선순위를 정해줄 수 있다.
# -를 붙이면, 현재와 반대차순으로 정렬된다.
e = sorted(a, key = lambda x : (x[0], -x[1]))
# e = [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]
f = sorted(a, key = lambda x : -x[0])
# f = [(5, 1), (5, 2), (3, 0), (1, 2), (0, 1)]
2)
s = ['2 A', '1 B', '4 C', '1 A']
>>>sorted(s)
['1 A', '1 B', '2 A', '4 C']
#하지만 나는 뒷문자 순 정렬을 원한다!
>>> s.sort(key=lambda x: (x.split[1], x.split[0]))
['1 A', '2 A', '1 B', '4 C']
3-4. 람다 표현식을 인수로 활용(map, filter, reduce)
- map()과 함께
>>> list(map(lambda x: x+10, [1,2,3]))
[11, 12, 13]
filter()와 함께
filter()는 boolean 값을 리턴하는 함수를 받아 조건에 맞으면 데이터를 반환하고 그렇지 않으면 반환하지 않는다.
>>> a = [8, 4, 2, 5, 2, 7, 9, 11, 26, 13]
>>> result = list(filter(lambda x : x > 7 and x < 15, a))
[8, 9, 11, 13]
reduce()와 함께
reduce()는 처음부터 함수에 순차적인 값을 처리.
(누적시킨달까?)
#reduce는 functools 모듈을 불러와야 사용가능.
>>> from functools import reduce t = [47, 11, 42, 13]
>>> result = reduce(lambda x, y : x + y, t)
113
참고한 링크:http://hleecaster.com/python-lambda-function/https://dojang.io/mod/page/view.php?id=2359https://velog.io/@k904808/Lambda-%ED%91%9C%ED%98%84%EC%8B%9D..-%EC%9C%BC%EC%9C%BC%EC%9C%BChttps://engkimbs.tistory.com/657
'Algorithm' 카테고리의 다른 글
[algorithm][python] 정렬 (0) | 2022.06.06 |
---|---|
[algorithm][python] DFS, BFS (0) | 2022.06.06 |
[algorithm][python] stack, queue (0) | 2022.06.06 |
[python] isalpha, isalnum/ isnumeric, isdigit, isdecimal 함수 (0) | 2022.06.06 |
[python] collections 모듈 연습 (0) | 2022.06.06 |