Python의 Lambda 함수는 작은 익명 함수를 즉석에서 생성하는 강력한 방법입니다. 이러한 함수는 일반적으로 전체 함수 정의에 따른 오버헤드가 불필요한 짧고 간단한 작업에 사용됩니다.
기존 함수는 def 키워드를 사용하여 정의되는 반면, Lambda 함수는 람다 키워드를 사용하여 정의되며 코드 줄에 직접 통합됩니다. 특히, 내장 함수의 인수로 자주 사용됩니다. 이를 통해 개발자는 임시 함수 정의가 필요하지 않아 깔끔하고 읽기 쉬운 코드를 작성할 수 있습니다.
이 기사에서는 Lambda 함수의 기능과 해당 구문을 다룹니다. 또한 이를 사용하기 위한 몇 가지 예와 모범 사례를 제공하고 장단점에 대해 논의할 것입니다.
Lambda 함수는 버전 2.0부터 Python의 일부이므로 다음이 필요합니다.
이 자습서에서는 빠르고 강력하며 유연하고 사용하기 쉬운 오픈 소스 데이터 분석 및 조작 라이브러리인 Pandas 라이브러리와 함께 Lambda 함수를 사용하는 방법을 살펴보겠습니다. 아직 설치되어 있지 않은 경우 다음을 실행하세요.
pip install pandas
먼저 개발자가 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 함수는 일시적으로 간단한 함수가 필요한 상황에서 특히 사용됩니다. 특히 고차 함수의 인수로 흔히 사용됩니다.
몇 가지 실제 사례를 살펴보겠습니다.
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]
이제 초기 숫자의 제곱근을 포함하는 목록이 생겼습니다.
보시다시피 이는 나중에 재사용할 필요가 없는 기능을 즉시 사용하는 프로세스를 크게 단순화합니다.
이제 숫자 목록이 있고 짝수를 필터링한다고 가정해 보겠습니다.
다음과 같이 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]
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)]
간결함을 고려하여 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 함수 사용의 몇 가지 이점을 살펴보겠습니다.
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 라이브러리가 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 뉴스레터를 구독하고 단 하나의 게시물도 놓치지 마세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3