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()
lambda 함수의 인자에 특정한 값을 할당할 수도 있습니다.
sum = lambda x, y, z=3 : x + y + z
print(sum(2, 3))
위 코드의 결과는 [ 8 ]입니다.
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ Basic ] 파이썬 with 구문 : with ~ as (0) | 2023.03.17 |
---|---|
[ Basic ] 파이썬 if __name__ == "__main__" 구문 (0) | 2023.03.16 |
[ Basic ] Python(파이썬) sorted 함수 (0) | 2023.03.08 |
[ Basic ] 파이썬 Dictionary 키와 값의 목록 반환, keys() / values() / items() (0) | 2023.02.27 |
[ Basic ] 파이썬 Dictionary 추가하기, 삭제하기 (0) | 2023.02.26 |