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**2
def named_square(x): return x**2
print(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
함수는 코드를 단순화하는 유용한 도구이지만 현명하게 사용해야 합니다.