"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 Lambda 함수를 사용하는 방법

Python에서 Lambda 함수를 사용하는 방법

2024년 11월 15일에 게시됨
검색:880

How to Use Lambda Functions in Python

Python의 Lambda 함수는 작은 익명 함수를 즉석에서 생성하는 강력한 방법입니다. 이러한 함수는 일반적으로 전체 함수 정의에 따른 오버헤드가 불필요한 짧고 간단한 작업에 사용됩니다.

기존 함수는 def 키워드를 사용하여 정의되는 반면, Lambda 함수는 람다 키워드를 사용하여 정의되며 코드 줄에 직접 통합됩니다. 특히, 내장 함수의 인수로 자주 사용됩니다. 이를 통해 개발자는 임시 함수 정의가 필요하지 않아 깔끔하고 읽기 쉬운 코드를 작성할 수 있습니다.

이 기사에서는 Lambda 함수의 기능과 해당 구문을 다룹니다. 또한 이를 사용하기 위한 몇 가지 예와 모범 사례를 제공하고 장단점에 대해 논의할 것입니다.

전제조건

Lambda 함수는 버전 2.0부터 Python의 일부이므로 다음이 필요합니다.

  • 최소 Python 버전: 2.0.
  • 권장 Python 버전: 3.10 이상.

이 자습서에서는 빠르고 강력하며 유연하고 사용하기 쉬운 오픈 소스 데이터 분석 및 조작 라이브러리인 Pandas 라이브러리와 함께 Lambda 함수를 사용하는 방법을 살펴보겠습니다. 아직 설치되어 있지 않은 경우 다음을 실행하세요.

pip install pandas

Python용 Lambda 함수의 구문 및 기본 사항

먼저 개발자가 Lambda 함수를 생성하는 데 사용해야 하는 구문을 정의하겠습니다.

Lambda 함수는 람다 키워드와 그 뒤에 하나 이상의 인수와 표현식을 사용하여 정의됩니다.

lambda arguments: expression

두 숫자를 더하는 Lambda 함수를 생성한다고 가정해 보겠습니다.

add = lambda x, y: x   y

다음을 실행합니다:

result = add(3, 5)
print(result)

결과는 다음과 같습니다.

8

x와 y라는 두 개의 인수를 사용하는 익명 함수를 만들었습니다. 기존 함수와 달리 Lambda 함수에는 이름이 없습니다. 이것이 바로 "익명"이라고 말하는 이유입니다.

또한 일반 Python 함수에서처럼 return 문을 사용하지 않습니다. 따라서 우리는 Lambda 함수를 마음대로 사용할 수 있습니다. 인쇄할 수 있고(이 경우처럼) 변수에 저장할 수도 있습니다.

이제 Lambda 함수의 몇 가지 일반적인 사용 사례를 살펴보겠습니다.

Lambda 함수의 일반적인 사용 사례

Lambda 함수는 일시적으로 간단한 함수가 필요한 상황에서 특히 사용됩니다. 특히 고차 함수의 인수로 흔히 사용됩니다.

몇 가지 실제 사례를 살펴보겠습니다.

map() 함수와 함께 Lambda 함수 사용

map()은 주어진 함수를 iterable의 각 항목에 적용하고 결과와 함께 지도 객체를 반환하는 내장 함수입니다.

예를 들어 목록에 있는 각 숫자의 제곱근을 계산한다고 가정해 보겠습니다. 다음과 같이 Lambda 함수를 사용할 수 있습니다.

# Define the list of numbers
numbers = [1, 2, 3, 4]

# Calculate square values and print results
squared = list(map(lambda x: x ** 2, numbers))
print(squared)

결과는 다음과 같습니다.

[1, 4, 9, 16]

이제 초기 숫자의 제곱근을 포함하는 목록이 생겼습니다.

보시다시피 이는 나중에 재사용할 필요가 없는 기능을 즉시 사용하는 프로세스를 크게 단순화합니다.

filter() 함수와 함께 Lambda 함수 사용

이제 숫자 목록이 있고 짝수를 필터링한다고 가정해 보겠습니다.

다음과 같이 Lambda 함수를 사용할 수 있습니다.

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Filter for even numbers and print results
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)

결과는 다음과 같습니다.

[2,4]

sorted() 함수와 함께 Lambda 함수 사용

Python의 sorted() 함수는 모든 반복 가능한 요소에서 새로운 정렬된 목록을 반환합니다. Lambda 함수를 사용하면 이러한 목록에 특정 필터링 기준을 적용할 수 있습니다.

예를 들어 (x,y)라는 두 차원의 점 목록이 있다고 가정합니다. y 값을 점진적으로 정렬하는 목록을 만들고 싶습니다.

다음과 같이 할 수 있습니다:

# Creates a list of points
points = [(1, 2), (3, 1), (5, -1)]

# Sort the points and print
points_sorted = sorted(points, key=lambda point: point[1])
print(points_sorted)

그리고 우리는 다음을 얻습니다:

[(5, -1), (3, 1), (1, 2)]

List Comprehension에서 Lambda 함수 사용

간결함을 고려하여 Lambda 함수는 즉각적인 계산을 위해 목록 이해에 포함될 수 있습니다.

숫자 목록이 있다고 가정해 보겠습니다. 우리가 원하는 것은:

  • 전체 목록 반복
  • 초기값을 두 배로 계산하고 인쇄합니다.

이를 수행하는 방법은 다음과 같습니다.

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Calculate and print the double of each one
squared = [(lambda x: x ** 2)(x) for x in numbers]
print(squared)

그리고 우리는 다음을 얻습니다:

[1, 4, 9, 16]

Lambda 함수 사용의 이점

우리가 살펴본 예를 통해 Lambda 함수 사용의 몇 가지 이점을 살펴보겠습니다.

  • 논리가 단순한 간결성과 가독성: Lambda 함수는 간결한 코드를 허용하므로 표준 함수 정의의 필요성이 줄어듭니다. 이는 함수 논리가 단순한 경우 가독성을 향상시킵니다.
  • 향상된 기능적 프로그래밍 기능: Lambda 함수는 기능적 프로그래밍 원칙에 잘 부합하여 Python 코드에서 기능적 구성을 가능하게 합니다. 특히, 고차 함수의 사용과 일급 객체로서의 함수 적용을 용이하게 합니다.
  • Lambda 함수를 선호하는 시기와 이유: Lambda 함수는 코드의 다른 곳에서 재사용할 필요가 없는 짧은 "일회용" 함수를 정의할 때 특히 유리합니다. 따라서 고차 함수에 대한 인수와 같은 인라인 사용에 이상적입니다.

한계와 단점

Python에서 Lambda 함수의 몇 가지 제한 사항과 단점을 간략하게 살펴보겠습니다.

  • 복잡한 표현식의 가독성 문제: Lambda 함수는 간결하지만 복잡한 표현식에 사용하면 읽고 이해하기 어려울 수 있습니다. 이로 인해 코드를 유지 관리하고 디버그하기가 더 어려워질 수 있습니다.
  • 오류 처리 및 디버깅의 제한 사항: Lambda 함수는 단일 표현식만 포함할 수 있으므로 오류 처리를 위한 try-Exception 블록과 같은 문을 포함할 수 없습니다. 이러한 제한으로 인해 이러한 기능이 필요한 복잡한 작업에는 적합하지 않습니다.
  • 제한된 기능: Lambda 함수는 단일 표현식만 포함할 수 있으므로 표준 함수보다 다용도가 떨어집니다. 이러한 설계상의 제한으로 인해 단순한 작업 및 변환에만 사용이 제한됩니다.

Lambda 함수 사용 모범 사례

이제 몇 가지 장단점을 고려했으므로 Lambda 함수를 효과적으로 사용하기 위한 몇 가지 모범 사례를 정의해 보겠습니다.

  • 간단하게 유지: 가독성과 단순성을 유지하려면 Lambda 함수를 짧게 유지하고 간단한 작업으로 제한해야 합니다. 복잡한 로직을 가진 함수는 표준 함수로 리팩터링되어야 합니다.
  • 과용 방지: Lambda 함수는 다양한 상황에서 편리하지만, 과도하게 사용하면 코드를 읽고 유지 관리하기 어려울 수 있습니다. 명확성이 기본인 경우 신중하게 사용하고 표준 기능을 선택하세요.
  • Lambda 함수를 다른 Python 기능과 결합: 앞서 살펴본 것처럼 Lambda 함수는 목록 이해 및 고차 함수와 같은 다른 Python 기능과 효과적으로 결합할 수 있습니다. 이를 적절하게 사용하면 더욱 표현력이 풍부하고 간결한 코드를 얻을 수 있습니다.

Lambda 함수를 사용한 고급 기술

어떤 경우에는 고급 Lambda 함수 기술이 도움이 될 수 있습니다.

몇 가지 예를 살펴보겠습니다.

중첩된 Lambda 함수

복잡한 작업을 위해 Lambda 함수를 중첩할 수 있습니다.

이 기술은 시퀀스에 여러 개의 작은 변환이 필요한 시나리오에 유용합니다.

예를 들어 숫자의 제곱근을 계산한 다음 1을 더하는 함수를 생성한다고 가정해 보겠습니다. 이를 위해 Lambda 함수를 사용하는 방법은 다음과 같습니다.

# Create a nested lambda function
nested_lambda = lambda x: (lambda y: y ** 2)(x)   1

# Print the result for the value 3
print(nested_lambda(3))

혜택:

10

고급 기능을 위한 Python 라이브러리와의 통합

많은 Python 라이브러리가 Lambda 기능을 활용하여 복잡한 데이터 처리 작업을 단순화합니다.

예를 들어, Lambda 함수를 Pandas 및 NumPy와 함께 사용하여 데이터 조작 및 변환을 단순화할 수 있습니다.

두 개의 열이 있는 데이터 프레임이 있다고 가정합니다. 우리는 다른 두 열의 합인 또 다른 열을 만들고 싶습니다. 이 경우 다음과 같이 Lambda 함수를 사용할 수 있습니다.

# Create the columns' data
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}

# Create data frame
df = pd.DataFrame(data)

# Create row C as A B and print the dataframe
df['C'] = df.apply(lambda row: row['A']   row['B'], axis=1)
print(df)

그리고 우리는 다음을 얻습니다:

   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9

파이썬의 Lambda 함수에 대한 간략한 둘러보기가 끝났습니다!

마무리

이 기사에서는 Python에서 Lambda 함수를 사용하는 방법을 살펴보고, 장점과 단점, 모범 사례를 살펴보고, 몇 가지 고급 사용 사례를 다루었습니다.

즐거운 코딩하세요!

추신. Python 게시물이 보도되자마자 읽고 싶다면 Python Wizardry 뉴스레터를 구독하고 단 하나의 게시물도 놓치지 마세요!

릴리스 선언문 이 글은 https://dev.to/appsignal/how-to-use-lambda-functions-in-python-3llj?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3