파이썬(Python)

[ Basic ] 파이썬(python) lambda 함수

카루루1007 2023. 3. 9. 12:13
728x90
반응형

1. 기본개념

lambda 함수란 즉시 정의할 수 있는 익명의 함수입니다.

lambda 함수는 일시적으로 사용되거나, 다른 함수에 인자로 전달할 경우 유용합니다.

lambda 함수의 기본적인 구문은 다음과 같습니다.

lambda arguments : expression 

 

간단한 예를 들어 보겠습니다.

sum = lambda x, y: x + y
print(sum(2, 3))

위 코드의 결과는 [ 5 ]입니다.

 

기본 구문을 먼저 살펴보면

lambda x, y : x + y

[ x, y ]는 arguments 입니다. 

arguments는 여러개가 올 수 있는데 각각의 argument는 콤마[ , ]로 구분됩니다.

arguments와 expression은 세미콜론[ : ]으로 구분됩니다.

lambda x, y : x + y

[ x + y ]는 expression입니다.

 

즉, lambda x, y : x + y 

위 코드는 인자로 [ x, y ] 두개를 받아 두개의 인자를 더하라 [ x + y ]

그리고 그 값을 반환하라는 의미입니다.

 

일반적인 함수는 아래와 같이 정의됩니다.

def sum(x, y):
    return x+y

print(sum(2, 3))

sum 이라는 이름을 가지고 있고, def를 써서 별도로 정의를 해주어야 합니다.

예시에서는 두줄의 코드로 함수를 정의하였으나,

세줄이 될 수도 네줄이 될 수도 혹은 그 이상이 될 수도 있으나,

lambda 함수별도의 이름이 없고, 한줄로만 정의할 수 있습니다.

 

2. lambda(람다) 함수의 장점

 

lambda(함수)를 사용하면 코드가 간결해지고 읽기 쉽게 만들 수 있습니다.

또한 코드에 불필요한 함수를 추가하지 않아도 됩니다.

lambda(람다)함수는 표현식이 하나이기 때문에 단순하고 명확합니다.

마지막으로 lambda(람다) 함수는 다른 함수를 인자로 받는 고차 함수와 함께 사용이 가능합니다.

def apply_operation(num1, num2, operation):
    return operation(num1, num2)

result = apply_operation(5, 10, lambda x, y: x * y)

print(result)

위 코드를 보면 고차 함수에 대해 간결하게는 이해하실 수 있으실 겁니다.

위 코드의 결과는 [ 50 ]입니다.

반응형

3. lambda(람다) 함수의 사례

 

람다 함수는 데이터를 정렬하고 필터링 할 수 있습니다.

books = [ {"title": "구름", "year": 1960}, {"title": "하늘", "year": 1951}, {"title": "해", "year": 1949}, {"title": "별", "year": 1813}, {"title": "달", "year": 1925}]

sorted_books = sorted(books, key=lambda x: x["year"])

for book in sorted_books:
    print(book)

 위 코드는 books에 제목과 연도로 책의 이름과 발간년도에 대한

데이터가 있을때

발간연도로 정렬하는 방법입니다.

 

일부 데이터만 필터도 가능합니다.

books = [ {"title": "구름", "year": 1960}, {"title": "하늘", "year": 1951}, {"title": "해", "year": 1949}, {"title": "별", "year": 1813}, {"title": "달", "year": 1925}]

filtered_books = list(filter(lambda x: x["year"] == 1925, books))

print(filtered_books)

위 코드는 발간연도가 [ 1925 ]년인 책만 필터링하여 보여주는 코드입니다.

 

간단하게 다른 데이터를 조작할 수도 있습니다.

numbers = [1, 2, 3, 4, 5]

squared_numbers = list(map(lambda x: x**2, numbers))

print(squared_numbers)

위 코드의 결과는 다음과 같습니다.

[1, 4, 9, 16, 25]

 

tkinter를 사용하여 버튼을 클릭했을 때

실행되는 함수로 지정할 수도 있습니다.

import tkinter as tk

def do_something():
    print("Button clicked")

root = tk.Tk()

button = tk.Button(root, text="Click me", command=lambda: do_something())
button.pack()

root.mainloop()
앞서 포스팅했던 tkinter 버튼 숨기기 / 보여주기 에서도 사용한 적이 있습니다.

lambda 함수의 인자에 특정한 값을 할당할 수도 있습니다.

sum = lambda x, y, z=3 : x + y + z
print(sum(2, 3))

위 코드의 결과는 [ 8 ]입니다.

 

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

728x90
반응형