본문 바로가기
🔅코딩테스트 공부🔅/❗코테 함수 활용하기

#2 lambda 함수

by 윤무무 2023. 1. 31.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

def solution(strings, n):
    return sorted(strings, key = lambda x: (x[n], x))

위의 sorted 함수를 이용한 것이고, 여기에서는 문제의 조건이 1. index 기준으로 정렬, 2. index가 같을 경우 사전순으로 또 한 번 정렬이기 때문에 key 값을 (x[n], x) 라고 적어주었다.

댓글