Python 람다 함수 익명 함수는 함수에 이름이 없다는 의미입니다. 우리가 이미 알고 있듯이 데프 키워드는 Python에서 일반 함수를 정의하는 데 사용됩니다. 마찬가지로, 람다 키워드는 익명 함수를 정의하는 데 사용됩니다. 파이썬 .
Python Lambda 함수 구문
통사론: 람다 인수: 표현식
- 이 함수는 인수를 여러 개 가질 수 있지만 평가되고 반환되는 표현식은 하나만 가질 수 있습니다.
- 함수 객체가 필요할 때마다 람다 함수를 자유롭게 사용할 수 있습니다.
- 람다 함수는 구문상 단일 표현식으로 제한된다는 점을 알고 있어야 합니다.
- 함수의 다른 유형의 표현식 외에도 특정 프로그래밍 분야에서 다양한 용도로 사용됩니다.
Python Lambda 함수 예
예제에서는 람다 함수( 높은 ) 다음을 사용하여 문자열을 대문자로 변환합니다. 높은() .
이 코드는 다음과 같은 람다 함수를 정의합니다. upper> 문자열을 인수로 사용하고 다음을 사용하여 문자열을 대문자로 변환합니다. upper()> 방법. 그런 다음 이 람다 함수를 'techcodeview.com' 문자열에 적용하고 결과를 인쇄합니다.
파이썬3
str1>=> 'techcodeview.com'> upper>=> lambda> string: string.upper()> print>(upper(str1))> |
>
>
산출:
GEEKSFORGEEKS>
Python에서 Lambda 함수 사용
Python 람다 함수의 실제 용도 중 일부를 살펴보겠습니다.
Python 람다 함수를 사용한 조건 확인
여기서는 '형식_숫자' 람다 함수를 호출하고 num이 매개변수로 전달되어 작업을 수행합니다.
파이썬3
format_numeric>=> lambda> num: f>'{num:e}'> if> isinstance>(num,>int>)>else> f>'{num:,.2f}'> print>(>'Int formatting:'>, format_numeric(>1000000>))> print>(>'float formatting:'>, format_numeric(>999999.789541235>))> |
>
>
산출:
Int formatting: 1.000000e+06 float formatting: 999,999.79>
Lambda 함수와 def 정의 함수의 차이점
코드는 두 가지를 모두 사용하여 큐브 함수를 정의합니다. ' def'> 키워드와 람다 함수. 두 가지 접근법을 모두 사용하여 주어진 숫자(이 경우 5)의 세제곱을 계산하고 결과를 인쇄합니다. 출력은 둘 다 125입니다. ' def'> 및 람다 함수는 동일한 큐브 계산을 달성함을 보여줍니다.
파이썬3
def> cube(y):> >return> y>*>y>*>y> lambda_cube>=> lambda> y: y>*>y>*>y> print>(>'Using function defined with `def` keyword, cube:'>, cube(>5>))> print>(>'Using lambda function, cube:'>, lambda_cube(>5>))> |
>
>
산출:
Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125>
위의 예에서 볼 수 있듯이 두 가지 모두 입방체() 기능과 람다_큐브() 기능은 의도한 대로 동일하게 작동합니다. 위의 예를 좀 더 분석해 보겠습니다.
| 람다 함수 포함 | 람다 함수 없음 |
|---|---|
| 일부 값을 반환하는 한 줄 문을 지원하는 경우도 있습니다. | 기능 블록 내에서 원하는 수의 라인을 지원합니다. |
| 짧은 작업/데이터 조작을 수행하는 데 적합합니다. | 여러 줄의 코드가 필요한 모든 경우에 적합합니다. |
| 람다 함수를 사용하면 코드 가독성이 저하되는 경우가 있습니다. | 쉽게 읽을 수 있도록 주석과 함수 설명을 사용할 수 있습니다. |
Python 람다 함수의 실제 사용
목록 이해 기능을 갖춘 Python Lambda 함수
내부의 각 반복에서 목록 이해 , 기본 인수 x(여기서 x는 반복의 현재 항목)를 사용하여 새 람다 함수를 생성합니다. 나중에 for 루프 내에서 다음을 사용하여 기본 인수를 갖는 동일한 함수 객체를 호출합니다. 안건() 그리고 원하는 값을 얻으세요. 따라서, is_even_list 람다 함수 개체 목록을 저장합니다.
파이썬3
is_even_list>=> [>lambda> arg>=>x: arg>*> 10> for> x>in> range>(>1>,>5>)]> for> item>in> is_even_list:> >print>(item())> |
>
>
산출:
10 20 30 40>
if-else를 사용하는 Python Lambda 함수
여기서 우리는 맥스 람다 함수를 사용하여 두 정수의 최대값을 구합니다.
파이썬3
Max> => lambda> a, b : a>if>(a>비)>else> b> print>(>Max>(>1>,>2>))> |
>
>
산출:
2>
여러 문이 포함된 Python Lambda
Lambda 함수는 여러 문을 허용하지 않지만 두 개의 람다 함수를 만든 다음 다른 람다 함수를 첫 번째 함수에 대한 매개 변수로 호출할 수 있습니다. 람다를 사용하여 두 번째 최대 요소를 찾아 보겠습니다.
코드는 다음과 같은 하위 목록 목록을 정의합니다. ' List'> . 람다 함수를 사용하여 각 하위 목록을 정렬하고 각 하위 목록에서 두 번째로 큰 요소를 찾습니다. 결과는 두 번째로 큰 요소의 목록이며 인쇄됩니다. 출력에는 원래 목록의 각 하위 목록에서 두 번째로 큰 요소가 표시됩니다.
파이썬3
List> => [[>2>,>3>,>4>],[>1>,>4>,>16>,>64>],[>3>,>6>,>9>,>12>]]> sortList>=> lambda> x: (>sorted>(i)>for> i>in> x)> secondLargest>=> lambda> x, f : [y[>len>(y)>->2>]>for> y>in> f(x)]> res>=> secondLargest(>List>, sortList)> print>(res)> |
>
>
산출:
[3, 16, 9]>
Lambda 함수는 다음과 같은 내장 함수와 함께 사용할 수 있습니다. 필터() , 지도() 그리고 줄이다() .
filter()와 함께 람다() 함수 사용하기
Python의 filter() 함수는 함수와 목록을 인수로 사용합니다. 이는 함수가 True를 반환하는 시퀀스 시퀀스의 모든 요소를 필터링하는 우아한 방법을 제공합니다. 다음은 입력 목록에서 홀수를 반환하는 작은 프로그램입니다.
filter() 및 람다 함수를 사용하여 모든 홀수를 필터링합니다.
여기서 람다 x: (x % 2 != 0) 은 x가 짝수가 아닌 경우 True 또는 False를 반환합니다. filter()는 생성된 위치에만 요소를 유지하므로 진실 , 따라서 생성된 모든 홀수를 제거합니다. 거짓 .
파이썬3
li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>filter>(>lambda> x: (x>%> 2> !>=> 0>), li))> print>(final_list)> |
>
>
산출:
[5, 7, 97, 77, 23, 73, 61]>
람다 및 filter() 함수를 사용하여 18세 이상의 모든 사람을 필터링합니다.
코드는 연령 목록을 필터링하고 람다 함수를 사용하여 성인(18세 이상)의 연령을 추출합니다. ' filter'> 기능. 그런 다음 성인 연령 목록을 인쇄합니다. 출력에는 18세 이상의 개인의 연령이 표시됩니다.
파이썬3
ages>=> [>13>,>90>,>17>,>59>,>21>,>60>,>5>]> adults>=> list>(>filter>(>lambda> age: age>>18>, ages))> print>(adults)> |
중요한
>
>
산출:
[90, 59, 21, 60]>
map()과 함께 람다() 함수 사용하기
Python의 map() 함수는 함수와 목록을 인수로 사용합니다. 함수는 람다 함수와 목록으로 호출되며, 각 항목에 대해 해당 함수에서 반환된 모든 람다 수정 항목을 포함하는 새 목록이 반환됩니다. 예:
람다 및 map() 함수를 사용하여 목록의 모든 요소에 2를 곱합니다.
이 코드는 람다 함수를 사용하여 목록의 각 요소를 두 배로 늘립니다. ' map'> 기능. 그런 다음 두 배의 요소가 포함된 새 목록을 인쇄합니다. 출력에는 원래 목록의 각 요소에 2를 곱한 값이 표시됩니다.
파이썬3
li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>map>(>lambda> x: x>*>2>, li))> print>(final_list)> |
>
>
산출:
[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]>
람다 및 map() 함수를 사용하여 목록의 모든 요소를 대문자로 변환
이 코드는 람다 함수를 사용하여 동물 이름 목록을 대문자로 변환합니다. ' map'> 기능. 그런 다음 동물 이름이 대문자로 표시된 목록을 인쇄합니다. 출력에는 동물 이름이 모두 대문자로 표시됩니다.
파이썬3
animals>=> [>'dog'>,>'cat'>,>'parrot'>,>'rabbit'>]> uppered_animals>=> list>(>map>(>lambda> animal: animal.upper(), animals))> print>(uppered_animals)> |
>
>
산출:
['DOG', 'CAT', 'PARROT', 'RABBIT']>
람다() 함수를 Reduce()와 함께 사용하기
그만큼 줄이다() Python의 함수는 함수와 목록을 인수로 사용합니다. 이 함수는 람다 함수와 iterable을 사용하여 호출되고 새로운 축소된 결과가 반환됩니다. 이는 반복 가능한 쌍에 대해 반복 작업을 수행합니다. Reduce() 함수는 다음에 속합니다. 기능 도구 기준 치수.
람다 및 축소() 함수를 사용하여 목록에 있는 모든 요소의 합계
이 코드는 다음을 사용하여 목록에 있는 요소의 합을 계산합니다. ' reduce'> 에서 기능 ' functools'> 기준 치수. 수입한다 ' reduce'> , 목록을 정의하고 한 번에 두 개의 요소를 추가하는 람다 함수를 적용하고 목록에 있는 모든 요소의 합계를 인쇄합니다. 출력에는 계산된 합계가 표시됩니다.
파이썬3
from> functools>import> reduce> li>=> [>5>,>8>,>10>,>20>,>50>,>100>]> sum> => reduce>((>lambda> x, y: x>+> y), li)> print>(>sum>)> |
>
>
산출:
193>
여기서 이전 두 요소의 결과가 다음 요소에 추가되고 이는 (((((5+8)+10)+20)+50)+100)과 같이 목록 끝까지 계속됩니다.
람다 및 축소() 함수를 사용하여 목록에서 최대 요소 찾기
코드는 ' functools'> 목록에서 최대 요소를 찾는 모듈( ' lis'> ) ' reduce'> 함수와 람다 함수. 그런 다음 최대 요소(이 경우 6)를 인쇄합니다.
파이썬3
import> functools> lis>=> [>1>,>3>,>5>,>6>,>2>, ]> print>(>'The maximum element of the list is : '>, end>=>'')> print>(functools.>reduce>(>lambda> a, b: a>if> a>비>else> b, lis))> |
>
>
산출:
The maximum element of the list is : 6>