Coding Diary.

(파이썬) 람다(lambda)함수 개념과 예시 및 map, filter 함수와 같이 응용하기 본문

Coding/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
반응형