1. Lambda(람다) 함수란?
Python에서 간결하고 즉각적인 계산을 할 때 유용한 기능으로 코딩테스트에 주로 활용된다. 일반적으로 def를 사용한 함수와 달리, 람다 함수는 한 줄로 간단하게 정의할 수 있는 익명 함수이다. 일반적인 함수를 정의하는 방법과 람다 함수를 정의하는 방법은 아래와 같다.
(익명함수에 대해서는 아래 접은 글 참고✅)
익명함수란❓
def 와 같은 일반적인 방법으로 함수를 정의하고자 할 때는 함수명이 반드시 필요하다. 하지만 람다 함수의 경우 매개변수와, 표현식(연산) 만 필요로 하며 함수명이 필요하지 않다.
즉, 람다함수는 함수명을 필요로 하지 않기 때문에 익명함수로 불린다.
# 람다 함수 선언 방법
lambda 매개변수: 표현식
# 일반적인 함수 선언 방법
def add(x, y):
return x+y
if __name__ == "__main__":
print(add(5,3))
위에 존재하는 add(x, y) 함수를 람다 함수로 표현하면 다음과 같이 간결한 형태로 작성할 수 있다.
(lambda x, y: x + y)(5, 3)
람다 함수는 주로 map(), sort(), filter() 함수와 결합한 형태로 자주 사용하며 코딩테스트 문제를 풀 때 가독성과 효율성을 높일 수 있다.
2. map()과 람다 함수의 활용
map() 함수는 반복 가능한 객체의 각 요소에 함수를 적용할 때 사용한다. 예를 들어 두 리스트 요소를 각각 더하는 경우 다음과 같이 활용할 수 있다.
a = [1,2,3]
b = [4,5,6]
resutl = list(map(lambda x,y: x + y, a, b))
print(result)
# 결과 : [5, 7, 9]
또한, 리스트의 각 요소를 제곱하는 경우에도 map()과 람다를 활용할 수 있다.
number = [1,2,3,4]
squared_num = list(map(lambda x: x ** 2, number))
print(squared_num)
# 결과 : [1, 4, 9, 16]
3. filter() 와 람다 함수의 활용
filter() 함수는 if 함수와 유사한 형태로 동작하며, 반복 가능한 객체의 각 요소에 대해 조건을 검사하고 조건을 만족하는 요소만 추출하는 데 사용한다. 아래 코드는 number 리스트에서 짝수에 해당하는 요소만 추출하는 코드이다.
number = [1, 2, 3, 4, 5, 6]
filter_num = list(filter(lambda x: x % 2 == 0, number))
print(filter_num)
# 결과 : [2, 4, 6]
4. sort()와 람다 함수의 활용
sort() 함수는 오름차순 및 내림차순 정렬을 할 때 사용하는 함수로, 리스트의 특정 요소를 기준으로 정렬하고자 할 때 sort()와 람다 함수를 주로 결합하여 사용한다. 코딩테스트 문제를 풀 때 가장 많이 활용하는 방식이며 각 리스트의 두 번째 요소를 기준으로 정렬하는 코드는 아래와 같다.
a = [[1, 3], [3, 3], [3, 5], [7, 1]]
# 두 번째 요소를 기준으로 오름차순 정렬
a.sort(key = lambda x: x[1])
print(a)
# 결과 : [[7, 1], [1, 3], [3, 3], [3, 5]]
# 두 번째 요소를 기준으로 오름차순 정렬, 두 번째 요소가 같을 경우 첫 번째 요소로 정렬
a.sort(key = lambda x: (x[1], x[0]))
print(a)
# 결과 : [[7, 1], [1, 3], [3, 3], [3, 5]]
개인적으로는 람다 함수를 단독으로 사용하는 경우는 극히 드물지만, sort() 및 map() 함수와 결합된 형태로는 자주 사용한다. 특히, 이중 리스트로 선언될 경우 sort() 함수와 결합한 형태를 자주 사용하기에 여러 문제들을 풀어보며 익숙해지는 것이 중요하다고 생각한다!
'Coding' 카테고리의 다른 글
[Python] Dictionary 란? (0) | 2024.11.08 |
---|---|
[Python] Shadow DOM - Selenium (0) | 2024.03.17 |
[Python] Self는 무엇일까? (1) | 2023.10.29 |
1. Lambda(람다) 함수란?
Python에서 간결하고 즉각적인 계산을 할 때 유용한 기능으로 코딩테스트에 주로 활용된다. 일반적으로 def를 사용한 함수와 달리, 람다 함수는 한 줄로 간단하게 정의할 수 있는 익명 함수이다. 일반적인 함수를 정의하는 방법과 람다 함수를 정의하는 방법은 아래와 같다.
(익명함수에 대해서는 아래 접은 글 참고✅)
익명함수란❓
def 와 같은 일반적인 방법으로 함수를 정의하고자 할 때는 함수명이 반드시 필요하다. 하지만 람다 함수의 경우 매개변수와, 표현식(연산) 만 필요로 하며 함수명이 필요하지 않다.
즉, 람다함수는 함수명을 필요로 하지 않기 때문에 익명함수로 불린다.
# 람다 함수 선언 방법
lambda 매개변수: 표현식
# 일반적인 함수 선언 방법
def add(x, y):
return x+y
if __name__ == "__main__":
print(add(5,3))
위에 존재하는 add(x, y) 함수를 람다 함수로 표현하면 다음과 같이 간결한 형태로 작성할 수 있다.
(lambda x, y: x + y)(5, 3)
람다 함수는 주로 map(), sort(), filter() 함수와 결합한 형태로 자주 사용하며 코딩테스트 문제를 풀 때 가독성과 효율성을 높일 수 있다.
2. map()과 람다 함수의 활용
map() 함수는 반복 가능한 객체의 각 요소에 함수를 적용할 때 사용한다. 예를 들어 두 리스트 요소를 각각 더하는 경우 다음과 같이 활용할 수 있다.
a = [1,2,3]
b = [4,5,6]
resutl = list(map(lambda x,y: x + y, a, b))
print(result)
# 결과 : [5, 7, 9]
또한, 리스트의 각 요소를 제곱하는 경우에도 map()과 람다를 활용할 수 있다.
number = [1,2,3,4]
squared_num = list(map(lambda x: x ** 2, number))
print(squared_num)
# 결과 : [1, 4, 9, 16]
3. filter() 와 람다 함수의 활용
filter() 함수는 if 함수와 유사한 형태로 동작하며, 반복 가능한 객체의 각 요소에 대해 조건을 검사하고 조건을 만족하는 요소만 추출하는 데 사용한다. 아래 코드는 number 리스트에서 짝수에 해당하는 요소만 추출하는 코드이다.
number = [1, 2, 3, 4, 5, 6]
filter_num = list(filter(lambda x: x % 2 == 0, number))
print(filter_num)
# 결과 : [2, 4, 6]
4. sort()와 람다 함수의 활용
sort() 함수는 오름차순 및 내림차순 정렬을 할 때 사용하는 함수로, 리스트의 특정 요소를 기준으로 정렬하고자 할 때 sort()와 람다 함수를 주로 결합하여 사용한다. 코딩테스트 문제를 풀 때 가장 많이 활용하는 방식이며 각 리스트의 두 번째 요소를 기준으로 정렬하는 코드는 아래와 같다.
a = [[1, 3], [3, 3], [3, 5], [7, 1]]
# 두 번째 요소를 기준으로 오름차순 정렬
a.sort(key = lambda x: x[1])
print(a)
# 결과 : [[7, 1], [1, 3], [3, 3], [3, 5]]
# 두 번째 요소를 기준으로 오름차순 정렬, 두 번째 요소가 같을 경우 첫 번째 요소로 정렬
a.sort(key = lambda x: (x[1], x[0]))
print(a)
# 결과 : [[7, 1], [1, 3], [3, 3], [3, 5]]
개인적으로는 람다 함수를 단독으로 사용하는 경우는 극히 드물지만, sort() 및 map() 함수와 결합된 형태로는 자주 사용한다. 특히, 이중 리스트로 선언될 경우 sort() 함수와 결합한 형태를 자주 사용하기에 여러 문제들을 풀어보며 익숙해지는 것이 중요하다고 생각한다!
'Coding' 카테고리의 다른 글
[Python] Dictionary 란? (0) | 2024.11.08 |
---|---|
[Python] Shadow DOM - Selenium (0) | 2024.03.17 |
[Python] Self는 무엇일까? (1) | 2023.10.29 |