1. lambda 함수란 ?
익명함수 즉, 함수의 이름 없이 선언이 가능한 함수이다.
lambda x: x + 10 #호출 불가능
a = (lambda x: x*x) #변수에 할당해 줌으로써 호출 가능
a(1)
(lambda x: x+10)(1) #괄호를 이용하면 람다표현식 자체 호출 가능
위의 코드와 같이 lambda를 호출하기 위해서는 변수에 할당을 해주거나, (람다식)(인수) 의 형태로 작성해주어야 한다.
2. map()
map() 함수를 이용해 리스트의 요소를 하나씩 꺼내 함수에 넣고, return 값으로 새로운 리스트를 만들어 줄 수 있다.
a = [1,2,3]
list(map(lambda x: x+10, a))
#[11,12,13]
3. filter()
filter() 함수를 통해 리스트 요소를 함수에 넣고, return이 True인 것들만 리스트를 만들 수 있다.
a = [1,2,3]
list(filter(lambda x: x<3, a))
4. sorted()
sorted() 함수는 매개변수로 key 함수를 사용해서 정렬의 기준을 정할 수 있는데, 이를 lambda에서도 활용할 수 있다.
a = [[1,6,3],[4,5,6]]
list(sorted(a, key = lambda x: x[1]))
#[[4, 5, 6], [1, 6, 3]]
5. if문 이용하기
lambda 표현식에서 조건부 표현식을 이용할 수 있으며, elif는 불가능하다.
lambda 매개변수 : 식1 if 조건식 else 식2
a = [1,2,3]
list(map(lambda x: 'O' if x>1 else 'X', a))
#['X', 'O', 'O']
6. 활용 문제
사실 이 문제를 틀려서 lambda 함수를 공부했다. (원래 존재 자체를 몰랐음)
https://school.programmers.co.kr/learn/courses/30/lessons/12915
def solution(strings, n):
return sorted(strings, key = lambda x: (x[n], x))
위의 sorted 함수를 이용한 것이고, 여기에서는 문제의 조건이 1. index 기준으로 정렬, 2. index가 같을 경우 사전순으로 또 한 번 정렬이기 때문에 key 값을 (x[n], x) 라고 적어주었다.
'🔅코딩테스트 공부🔅 > ❗코테 함수 활용하기' 카테고리의 다른 글
#03 pop(),remove(),del()차이 (0) | 2023.02.01 |
---|---|
#00 그 외 (계속 추가) (0) | 2023.01.31 |
#1 문자열 뒤집는 방법(문자열 슬라이싱, reverse) (0) | 2023.01.28 |
댓글