Python의 Lambda 함수

Lambda 함수란 무엇입니까?

â € <
Python에서 함수는 객체입니다. 함수는 변수에 할당될 수 있고, 다른 함수에서 반환될 수 있으며, 목록 또는 사전에 저장되고 다른 함수의 매개 변수로 전달될 수 있습니다. 예를 들어 다음을 고려하십시오. map() 내장 함수. 구문은 다음과 같습니다. map(function, iterable) 그리고 그것은 쉽게 적용하는 데 사용됩니다 function 모든 요소에 iterable.

map() 실제로 반환 iterator 물체. 실제로는 결과를 다음과 같이 캐스팅합니다. list, tuple, set, dict, 등 중 더 편리한 것.
â € <
다음을 사용하여 목록의 모든 항을 제곱한다고 가정합니다. map() 기능. 이를 위해 다음을 정의합니다. square() 함수를 매개변수로 사용 map():

my_list = [1,2,3,4,5]
def square(x):
    return x**2

my_modified_list = list(map(square, my_list))
print(my_modified_list)
[1, 4, 9, 16, 25]

â € <
그러나 우리의 유일한 사용인 경우에, square() 기능은 이 목록을 만드는 것입니다. lambda 기능:

my_list = [1,2,3,4,5]
my_modified_list = list(map(lambda x: x**2, my_list))
print(my_modified_list)
[1, 4, 9, 16, 25]

Python에서 lambda 함수는 Alonzo Church의 이름과 구문을 사용하는 익명 함수입니다. 람다 미적분. 구문은 다음과 같습니다.

lambda x_1,..., x_n : expression(x_1, ..., x_n)

이렇게 하면 변수를 입력으로 받는 익명 함수가 생성됩니다. x_1, ..., x_n 그리고 평가된 expression(x_1, ..., x_n).
â € <
의 목적 lambda 함수는 함수를 매개변수로 받는 함수의 매개변수로 사용됩니다. map() 위에. Python을 사용하면 lambda 변수에 대한 함수이지만 PEP 8 스타일 가이드 반대 조언합니다. 간단한 함수를 변수에 할당하려면 한 줄 정의로 수행하는 것이 좋습니다. 이렇게 하면 결과 객체의 이름이 올바르게 지정되어 역추적 가독성이 향상됩니다.

anonymous_square = lambda x : x**2def named_square(x): return x**2print(anonymous_square.__name__)
print(named_square.__name__)


a = anonymous_square
b = named_square
print(a.__name__)
print(b.__name__)

Lambda 함수를 사용하는 이유는 무엇입니까?

마지막 단락 이후에 왜 lambda 기능. 결국, a로 할 수 있는 모든 것 lambda 함수는 명명된 함수로 수행할 수 있습니다.
â € <
이에 대한 대답은 lambda 기능 목적 계산을 나타내는 더 큰 표현식 안에 사는 것입니다. 이에 대해 생각하는 한 가지 방법은 변수 및 값과 유추하는 것입니다. 다음 코드를 고려하십시오.

x = 2

변수 x 정수에 대한 자리 표시자(또는 이름)입니다. 2. 예를 들어 전화 print(x)print(2) 정확히 동일한 출력을 제공합니다. 함수의 경우:

def square(x): return x**2

기능 square() 숫자의 제곱 계산을 위한 자리 표시자입니다. 이 계산은 다음과 같이 이름 없는 방식으로 작성할 수 있습니다. lambda x: x**2.
â € <
이 철학적 여담에 따라 다음을 위한 응용 프로그램의 몇 가지 예를 살펴보겠습니다. lambda 기능.
â € <

sorted() 함수와 함께 Lambda 사용

XNUMXD덴탈의 sorted() 함수는 iterable을 정렬합니다. 함수를 자신의 것으로 받아들입니다. key 인수 및 iterable의 각 요소에 적용된 함수의 결과는 요소를 정렬하는 데 사용됩니다.
â € <
이것은 a에 완벽하게 적합합니다. lambda 기능: 설정하여 key 매개변수 lambda 기능을 사용하여 요소의 모든 속성을 기준으로 정렬할 수 있습니다. 예를 들어 이름 목록을 성으로 정렬할 수 있습니다.

name_list = ['Grace Hopper', 'Ada Lovelace', 'Emmy Noether', 'Marie Curie']
​
sorted_by_surname = sorted(name_list, key = lambda x: x.split()[1])
​
print(sorted_by_surname)
['Marie Curie', 'Grace Hopper', 'Ada Lovelace', 'Emmy Noether']

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

XNUMXD덴탈의 filter() 함수의 구문은 다음과 같습니다. filter(function, iterable) 의 요소를 출력합니다. iterable 평가하는 function(element) 사실로 (그것은 WHERE SQL의 절). 우리는 사용할 수 있습니다 lambda 에 대한 매개변수로 기능 filter() iterable에서 요소를 선택합니다.

다음 예제를 고려하십시오.

num_list = list(range(0,100))
​
multiples_of_15= filter(lambda x: (x % 3 == 0) and (x % 5 == 0), num_list)
​
print(list(multiples_of_15))
[0, 15, 30, 45, 60, 75, 90]

filter() 적용 lambda 기능 lambda x: (x % 3 == 0) and (x % 5 == 0) 의 각 요소에 range(0,100), 그리고 반환 filter 물체. 다음과 같이 캐스팅하여 요소에 액세스합니다. list.
â € <

map() 함수와 함께 Lambda 사용

â € <
마지막 예는 서론에서 본 것입니다. map() 함수. 그만큼 map() 함수 구문은 다음과 같습니다. map(function, iterable)map() 적용하다 function 의 각 요소에 iterable, 반환 map 에 캐스팅하여 액세스할 수 있는 객체 list.

우리는 이것이 어떻게 목록에 적용될 수 있는지 보았지만 다음을 사용하여 사전에 적용될 수 있습니다. dict.items() 방법:

my_data = {'Mary':1, 'Alice':2, 'Bob':0}
map_obj = map(lambda x: f'{x[0]} had {x[1]} little lamb', my_data.items())
print(', '.join((map_obj)))
Mary had 1 little lamb, Alice had 2 little lamb, Bob had 0 little lamb

또는 문자열로:

my_string = 'abcdefg'
''.join(map(lambda x: chr(ord(x)+2),my_string))
'cdefghi'

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

우리는 사용할 수 있습니다 map() 기발한 방법으로 기능 – 한 가지 예는 동일한 입력에 많은 기능을 적용하는 것입니다.

예를 들어 텍스트 문자열을 수신하는 API를 만들고 함수 목록을 적용하려고 한다고 가정합니다.

각 함수는 텍스트에서 일부 기능을 추출합니다. 추출하려는 특징은 단어 수, 두 번째 단어, 네 번째 단어의 네 번째 글자입니다.

def number_of_words(text):
  return len(text.split())
​
def second_word(text):
  return text.split()[1]
​
def fourth_letter_of_fourth_word(text):
  return text.split()[3][3]
​
function_list = [number_of_words, second_word, fourth_letter_of_fourth_word]
​
my_text = 'Mary had a little lamb'
map_obj = map(lambda f: f(my_text), function_list)
​
feature_list = list(map_obj)
​
print(feature_list)
[5, 'had', 't']

â € <

결론

â € <
이 가이드에서는 lambda 파이썬의 함수. 우리는 그것을 보았다 lambda 함수는 다른 함수의 인라인 함수 매개변수로 사용되는 익명 함수입니다. 우리는 사용 사례와 사용하지 않는 경우를 보았습니다.
â € <
프로그래밍할 때 Donald Knuth의 인용문을 염두에 두는 것이 중요합니다. 이를 염두에 두고 lambda 함수는 코드를 단순화하는 유용한 도구이지만 현명하게 사용해야 합니다.

타임 스탬프 :

더보기 스택카부스