Python의 Lambda 함수에서 여러 인수 전달
람다 형식 또는 람다 식은 Python의 익명 함수입니다. Python에서 예약된 lambda
키워드를 사용하여 만들 수 있는 인라인 함수입니다.
이 기사에서는 Python의 람다 함수에 대해 설명하고 여러 인수를 처리하는 방법을 배웁니다.
Python의 Lambda 함수
람다 함수는 lambda
키워드, 매개변수 또는 바인딩된 변수, 함수 본문의 세 부분으로 구성됩니다. 함수 본문은 이러한 함수가 인라인이므로 단일 Python 표현식만 가질 수 있습니다.
이러한 함수는 즉시 호출할 수 있을 뿐만 아니라 다른 일반 Python 함수처럼 사용할 수도 있습니다.
Lambda 함수의 구문은 다음과 같습니다.
lambda < parameters comma seperated >: expression
함수 본문의 표현식은 일부 값을 반환해야 합니다. 표현식이 값을 반환하지 않으면 람다 함수의 결과는 None
값이 됩니다.
인라인 호출의 경우 람다 함수를 괄호로 묶고 옆에 있는 인수 값을 괄호로 묶습니다.
다음은 이에 대한 구문입니다.
(lambda < parameters comma seperated > : expression) ( < parameters comma seperated > )
이러한 람다 함수를 이해하기 위해 두 숫자를 곱하는 람다 함수를 만들어 보겠습니다. 이러한 함수를 즉시 호출할 수 있고 일반 Python 함수로 사용할 수 있다고 논의한 것처럼 예제에는 람다 함수의 두 버전이 모두 포함됩니다.
곱셈 예제는 다음 코드를 참조하십시오.
# Regular function calls
def multiply(a, b):
return a * b
print(multiply(1, 2))
print(multiply(10, 5))
print(multiply(10.5, 9.3))
print(multiply(0.945, -5.645))
print(multiply(1000e9, 0), end="\n\n")
# Inline invocation
print((lambda a, b: a * b)(1.1, 1.2))
print((lambda a, b: a * b)(10, 5))
print((lambda a, b: a * b)(10.5, 9.3))
print((lambda a, b: a * b)(0.945, -5.645))
print((lambda a, b: a * b)(1000e9, 0))
출력:
2
50
97.65
-5.334524999999999
0.0
1.32
50
97.65
-5.334524999999999
0.0
더 정확하게 만들기 위해 숫자 목록에서 홀수 값을 필터링하고 목록 요소의 제곱을 계산하고 목록 요소의 세제곱근을 계산하는 세 가지 예를 더 살펴보겠습니다.
첫 번째 예는 다음 Python 코드를 참조하십시오.
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def filter_odd(a):
return a % 2 != 0
print(list(filter(filter_odd, x)))
print(list(filter(filter_odd, y)))
print(list(filter(filter_odd, z)), end="\n\n")
# Inline invocation
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(x))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(y))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(z))
출력:
[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]
[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]
두 번째 예는 다음 Python 코드 스니펫을 참조하세요.
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def square(a):
return a ** 2
print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")
# Inline invocation
print((lambda array: list(map(lambda a: a ** 2, array)))(x))
print((lambda array: list(map(lambda a: a ** 2, array)))(y))
print((lambda array: list(map(lambda a: a ** 2, array)))(z))
출력:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]
그리고 세 번째 예는 다음 Python 코드 스니펫을 참조하세요.
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def square(a):
return a ** (1 / 3)
print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")
# Inline invocation
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(x))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(y))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(z))
출력:
[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]
[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]
Python Lambda 함수에서 여러 인수 전달
람다 함수에서 여러 인수를 전달하려면 모든 매개변수를 쉼표로 구분하여 언급해야 합니다. 예를 들어 이것을 이해합시다.
세 개의 매개변수를 사용하는 람다 함수를 만들 것입니다. 목록과 두 개의 정수. 람다 함수는 첫 번째 정수를 더하고 각 목록 요소에서 두 번째 정수를 뺍니다.
이에 대해서는 다음 Python 코드를 참조하십시오.
x1 = [1, 8, 27, 64, 125, 216, 343, 512]
x2 = 5
x3 = 6
y1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
y2 = 4
y3 = 1
z1 = [78, 9797, 97, 985, 75473, 2845, 74]
z2 = 99
z3 = 99
# Regular function calls
def modify(a, b, c):
return [x + b - c for x in a]
print(modify(x1, x2, x3))
print(modify(y1, y2, y3))
print(modify(z1, z2, z3), end="\n\n")
# Inline invocation
print((lambda a, b, c: [x + b - c for x in a])(x1, x2, x3))
print((lambda a, b, c: [x + b - c for x in a])(y1, y2, y3))
print((lambda a, b, c: [x + b - c for x in a])(z1, z2, z3))
출력:
[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
관련 문장 - Python Function
- Python에서 함수 종료
- Python의 선택적 인수
- Python Functools 부분 함수
- Python 함수 매개변수 유형
- Python에서 단계 함수 맞추기
- Python의 내장 ID 함수