코딩공부/Python
(파이썬) 람다(lambda)함수 개념과 예시 및 map, filter 함수와 같이 응용하기
life-of-nomad
2024. 6. 11. 11:05
728x90
반응형
지난 글에서 함수 def를 정의하고 호출하는 방법과 코드를 문서화하기 위한 독스트링(docstring)에 대해 알아보았습니다. 이번 글에서는 유용한 함수인 람다(lambda) 함수와 람다 식에 대해 알아보겠습니다.
🔻(참고) def 함수🔻
(파이썬) def 함수 정의하고 호출하기, 변수 범위
함수를 사용하려면 먼저 함수가 어떤 역할을 하는지, 어떤 입력값이 필요할 수 있는지를 정의해야 합니다. 함수 안에 있는 코드는 우리가 그 함수를 호출하거나 사용할 때만 실행됩니다. 이번
life-of-nomad.tistory.com
🔻(참고) def 독스트링 🔻
(파이썬) def 함수 문서화하기 위한 독스트링(docstring) 쉽게 알아보기
지난 글에서 def를 이용하여 함수를 정의하고 호출하는 방법에 대해 알아보았습니다. 이번 글에서는 코드를 더욱 쉽게 이해하고 사용하도록 하기 위한 독스트링(docstring)에 대해 알아보겠습니다.
life-of-nomad.tistory.com
1. 람다식
- 파이썬에서는 람다 표현식을 사용하여 익명 함수(anonymous function)를 만들 수 있습니다.
- 즉, 이름이 없는 함수를 만들 수 있습니다.
- 익명 함수는 코드에서 나중에 필요하지 않은 간단한 함수를 만들 때 유용합니다.
- 특히, 고차원 함수 즉, 다른 함수를 인수로 받는 함수에 특히 유용할 수 있습니다.
- 예를 들어, 람다 식을 사용하면 이 함수를 줄일 수 있습니다.
def multiply(x, y):
return x * y
multiply = lambda x, y: x * y
- 위의 두 함수는 모두 같은 방식으로 사용됩니다. 아래와 같이 호출할 수 있습니다.
multiply(4, 7)
- 28이 리턴됩니다.
2. 람다 함수의 구성 요소
- 키워드 lambda는 코드가 람다식이라는 걸 나타내기 위해 사용합니다.
- lambda 뒤에는 쉼표로 구분한 익명 함수들의 인수(들)이 나오고, 인수를 쉼표로 구분하고, 그 뒤에 콜론 : 을 씁니다.
- 함수와 유사하게, 람다식에서 인수의 이름은 임의로 할 수 있습니다.
- 마지막은 이 함수에서 계산되고 리턴되는 식입니다.
3. 예시
문제1) map()을 사용하여 각 리스트의 평균을 찾아 averages 리스트를 람다 표현식으로 코드 작성하기
* map(function, iterable) 함수
- iterable의 각 요소에 대해 function 함수를 적용한 결과를 새로운 iterator로 반환합니다.
- 이때, function 함수는 각 요소를 인자로 받아서 처리하며, 함수의 반환값이 새로운 iterator의 각 요소가 됩니다.
numbers = [
[34, 63, 88, 71, 29],
[90, 78, 51, 27, 45],
[63, 37, 85, 46, 22],
[51, 22, 34, 11, 18]
]
def mean(num_list):
return sum(num_list) / len(num_list)
averages = list(map(mean, numbers))
averages = list(map(lambda x: sum(x) / len(x), numbers))
print(averages)
>>> [57.0, 58.2, 50.6, 27.2]
문제2) filter()을 사용하여 글자 수 10자 이내의 cities만 찾는 함수를 람다 표현식으로 코드 작성하기
* filter(function, iterator) 함수
- 첫 번째 매개변수로는 필터링을 적용시킬 함수가 오고 두 번째 매개변수로는 반복 가능한 값들이 들어오게 됩니다.
- iterator에 들어온 값들을 하나씩 function에 넣어서 반환이 true인 값을 필터링해서 다시 리스트로 만들어줍니다.
cities = ["New York City", "Los Angeles", "Chicago", "Mountain View", "Denver", "Boston"]
def is_short(name):
return len(name) < 10
short_cities = list(filter(is_short, cities))
short_cities = list(filter(lambda x: len(x) < 10, cities))
print(short_cities)
>>> ['Chicago', 'Denver', 'Boston']
728x90
반응형