목차
- 람다(Lambda)
- 인라인 람다
- 람다와 인라인 람다 차이점
- Filter 함수
- Map 함수
람다(Lambda)
Lambda 함수는 lambda 키워드를 사용하여 정의할 수 있는 Python의 작은 익명 함수입니다. 여러 인수를 사용할 수 있지만 단일 표현식만 가질 수 있습니다. Lambda 함수는 일반적으로 def 키워드를 사용하여 전체 함수를 정의하는 것이 불필요하거나 번거로운 짧고 간단한 작업에 사용됩니다.
람다 함수를 만드는 구문은 다음과 같습니다.
lambda arguments: expression
다음은 람다 함수의 몇 가지 예입니다.
1. 두 개의 숫자를 더하는 람다 함수
add = lambda a, b: a + b
result = add(5, 3)
print(result) # Output: 8
2. 숫자를 제곱하는 람다 함수
square = lambda x: x * x
result = square(4)
print(result) # Output: 16
람다 함수는 종종 함수를 인수로 받아들이는 map(), filter() 및 sorted()와 같은 내장 함수와 함께 사용됩니다. 예를 들어 람다 함수를 사용하여 숫자 목록을 내림차순으로 정렬합니다.
numbers = [3, 1, 6, 2, 8, 4]
sorted_numbers = sorted(numbers, key=lambda x: -x)
print(sorted_numbers) # Output: [8, 6, 4, 3, 2, 1]
람다 함수는 범위와 기능이 제한되어 있습니다. 더 복잡한 작업이 필요하거나 여러 표현식이 필요한 경우 def 키워드로 정의된 정규 함수를 사용하는 것이 좋습니다.
인라인 람다
인라인 람다는 단순히 식 내에서 직접 사용되거나 변수에 할당하지 않고 다른 함수에 대한 인수로 사용되는 람다 함수입니다. Lambda 함수는 익명 함수이므로 이름이 없으며 lambda 키워드를 사용하여 정의됩니다. 인라인 람다는 짧은 기간 동안 작고 간단한 함수가 필요하고 def 키워드를 사용하여 전체 함수를 정의하고 싶지 않을 때 유용할 수 있습니다.
람다 함수의 구문은 다음과 같습니다.
lambda arguments: expression
다음은 인라인 람다 함수를 사용하여 숫자 목록을 내림차순으로 정렬하는 예입니다.
numbers = [3, 1, 4, 2, 5]
sorted_numbers = sorted(numbers, key=lambda x: -x)
print(sorted_numbers) # Output: [5, 4, 3, 2, 1]
이 예에서 sorted() 함수는 정렬 순서를 결정하는 함수인 key 인수를 사용합니다. 인라인 람다 함수 lambda x: -x는 각 숫자를 부정하여 sorted() 함수가 목록을 내림차순으로 정렬하도록 합니다. 마찬가지로 map(), filter() 또는 함수를 인수로 허용하는 다른 함수와 함께 인라인 람다를 사용할 수 있습니다.
람다와 인라인 람다 차이점
람다 함수는 익명 함수로, 간단한 함수를 정의하는 데 사용되며 일회성으로 사용됩니다. 인라인 람다는 코드의 특정 위치에서 즉시 사용할 수 있는 람다 함수를 설명하는 데 사용되는 용어입니다.
둘 다 간단한 함수를 정의할 때 사용되지만, 인라인 람다는 일반적으로 다른 함수의 인수로 전달되거나 직접 계산에 사용됩니다. 람다 함수는 다음과 같이 정의할 수 있습니다:
lambda x: x * 2
인라인 람다는 코드 내에서 직접 사용되는 예입니다:
numbers = [1, 2, 3, 4, 5]
doubled_numbers = map(lambda x: x * 2, numbers)
# 결과를 리스트로 변환하고 출력
result = list(doubled_numbers)
print(result) # Output: [2, 4, 6, 8, 10]
여기서 map 함수에 전달된 람다 함수는 인라인으로 사용되었습니다. 따라서 람다 함수와 인라인 람다 함수는 동일한 개념을 설명하지만, 인라인 람다는 특정 위치에서 즉시 사용되는 람다 함수를 설명할 때 사용되는 용어입니다. 이 때 출력을 하고 싶다면 리스트로 변환하고 print로 출력이 가능합니다.
Filter 함수
'filter()' 함수는 특정 조건에 따라 iterable(목록, 튜플 또는 세트와 같은)에서 요소를 필터링하는 데 사용되는 내장 Python 함수입니다. 이 함수는 부울 값을 반환하는 함수와 필터링할 iterable의 두 가지 인수를 사용합니다. filter() 함수는 주어진 함수를 iterable의 각 요소에 적용하고 함수가 True를 반환하는 요소만 포함하는 새로운 iterable을 반환합니다.
다음은 filter() 함수의 구문입니다.
filter(function, iterable)
function은 단일 인수를 취하고 부울 값(True 또는 False)을 반환하는 함수여야 합니다. 함수 대신 None이 제공되면 filter() 함수는 부울 컨텍스트에서 False로 평가되는 모든 요소를 제거합니다(예: None, False, 0, 빈 컬렉션, 등.).
다음은 filter() 함수를 사용하여 목록에서 짝수를 필터링하는 예입니다.
def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = filter(is_even, numbers)
print(list(even_numbers)) # Output: [2, 4, 6, 8]
더 짧고 간단한 조건을 위해 filter()와 함께 람다 함수를 사용할 수도 있습니다. 다음은 람다 함수를 사용하는 동일한 예입니다.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # Output: [2, 4, 6, 8]
filter() 함수는 적절한 생성자(예: list(), tuple())를 사용하여 리스트, 튜플 또는 기타 컬렉션 유형으로 변환될 수 있는 반복 가능한 필터 객체를 반환한다는 점을 명심하세요.
Map 함수
map() 함수는 지정된 함수를 iterable의 각 요소(예: 목록, 튜플 또는 집합)에 적용하고 결과를 포함하는 새 iterable을 만드는 데 사용되는 내장 Python 함수입니다. map() 함수는 요소에 적용하려는 함수와 처리할 iterable의 두 가지 인수를 사용합니다.
다음은 map() 함수의 구문입니다.
map(function, iterable)
function은 단일 인수를 취하고 값을 반환하는 함수여야 합니다. map() 함수는 이 함수를 iterable의 각 요소에 적용하고 결과를 포함하는 새로운 iterable을 생성합니다.
다음은 map() 함수를 사용하여 목록의 각 숫자를 제곱하는 예입니다.
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
더 짧고 간단한 변환을 위해 map()과 함께 람다 함수를 사용할 수도 있습니다. 다음은 람다 함수를 사용하는 동일한 예입니다.
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
map() 함수는 적절한 생성자(예: list(), tuple())를 사용하여 리스트, 튜플 또는 기타 컬렉션 유형으로 변환할 수 있는 반복 가능한 맵 객체를 반환한다는 점을 명심해야 합니다.
'Python > Python 기본' 카테고리의 다른 글
[Python] 반복문을 사용하는 여러가지 방법 (0) | 2023.04.30 |
---|---|
[Python] 텍스트 파일 처리 (0) | 2023.04.30 |
[Python] 파이썬 튜플(tuple)이란? (2) | 2023.04.30 |
[Python] 재귀 함수란? (2) (2) | 2023.04.30 |
[Python] 재귀함수란? (0) | 2023.04.29 |