공부중
[python] lamda 표현식 본문
1. lamda 기초
lambda areguments: expression
lambda : 람다 함수를 정의
areguments: 함수의 입력 인자, x, y, z와 같이 여러개를 넣을 수 있다.
expression : 인사를 사용하는 표현식. 표현식의 결과가 함수의 반환 값이 된다.
람다 표현식은 이름이 없는 함수를 만든다 -> 익명 함수
예를 들어 x + y에 대한 함수를 만들면 다음과 같다.
def func_plus(x, y):
return x + y
람다 표현식을 쓰면 다음과 같다.
lambda x, y: x + y
람다 표현식을 변수에 할당해서 사용할 수도 있지만 람다 표현식 자체를 바로 사용할 수도 있다.
(lambda 입력매개변수: 출력식)(인수)
(lambda x, y: x + y)(1, 2) # 출력 3
람다 표현식 안에서는 변수를 만들 수 없지만 람다 표현식 바깥에 있는 변수는 사용할 수 있다.
2. map
반복 가능한 객체의 각 요소를 함수에 전달하고 함수를 통과한 모든 요소의 결과를 반환하는 것
map(func, *iterables)
func : 각 요소에 적용할 함수
iterables: 함수를 적용할 데이터 집합
지금까지 많이 쓰던 예시
srt_list = ['1', '2', '3']
int_lst = list(map(int, srt_list))
print(int_lst)
func에는 int말고도, add, str.upper 등을 사용할 수 있을 것이다.
3. 조건식 사용하기
lambda 입력매개변수: 식1 if 조건식 else 식2
조건식을 만족하면 식 1에 대한 값 출력. 아닐경우 식2에 대한 값 출력
elif는 사용하지 못하며 if를 사용할 경우 무조건 else를 같이 사용해야 한다.
하지만 if 조건식을 여러개 사용할 수는 있다.
lambda 입력매개변수: 식1 if 조건식1 else 식2 if 조건식2 else 식3
조건 식1이 아닌 경우 else에 대한 조건문을 붙이는 느낌으로 이해
4. filter
함수가 부울 값(True, False)을 반환하도록 하고 반복가능한 객체(iterable)의 각 요소를 함수에 전달.
즉, 논리에 거짓인 요소를 필터링하게 된다.
filter(func, iterable)
map는 여러 iterable을 받을 수 있는 반면 filter는 단 하나의 iterable만 사용할 수 있다.
그러니까 map는 여러 리스트를 받을 수 있는데 filter는 하나의 리스트에대해서만 처리하게 된다. 그래서 map부분에서는
*iterable로 표시했던 것.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Using a lambda function to check if numbers are even
even_numbers = filter(lambda x: x % 2 == 0, numbers)
# Converting the filter object to a list and printing it
print(list(even_numbers)) # This will output: [2, 4, 6, 8, 10]
5. reduce
reduce(func, iterable[, initial])
시퀀스의 요소들을 누적적으로 특정함수에 적용하여 하나의 값으로 줄인다.
- 함수(Function): 두 개의 인자를 받아 하나의 값으로 결합하는 함수
- 시퀀스(Sequence): 누적 적용될 시퀀스
- 초기값(Initializer): 선택적으로 추가하면 된다.
reduce는 파이썬 3부터는 내장함수가 아니므로 functools에서 가져와야 한다.
'프로그래밍 > 파이썬 Python' 카테고리의 다른 글
[python] 자료형(Data Type), 문자열 (0) | 2024.08.07 |
---|---|
[Python] 기본 설명 (0) | 2024.08.06 |
[python] GUI - turtle (0) | 2024.07.26 |
[python] 리스트 컴프리헨션(List Comprehension) (0) | 2024.07.25 |
딕셔너리 값 입력 받기 (1) | 2024.07.22 |