Python lambda, map, filter 함수 기본개념
2022-03-20
.
[학습자료]
패스트캠퍼스 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online”를 공부하고 정리한 내용입니다.
** URL : https://fastcampus.co.kr/dev_online_pyweb
[학습내용]
- 람다함수란
(1) 이름을 지을 필요도 없는 간단한 형태의 함수
(2) 다른 함수의 argument로 넣을 수 있음
(3) 코드가 간결해지고, 메모리 절약이 된다.
- 기존함수 정의 및 호출방법 vs 람다 함수 정의 및 호출방법
기존함수 람다함수
def 함수이름(매개변수): lambda 매개변수:결과
return 결과
def minus_one(a): lambda a:a-1
return a-1
minus_one(10) (lambda a:a-1)(10)
minus_one = lambda a:a-1
minus_one(10)
9 9
9
- if 문을 사용하는 케이스의 함수 비교
기존 함수 정의 방법 람다 함수 정의 방법
def is_positive_number(a): lambda a : True if a > 0 else False
if a>0:
return True
else:
return False
is_positive_number(-2) (lambda a : True if a > 0 else False)(-2)
is_positive_number = lambda a : True if a > 0 else False
is_positive_number(-2)
False False
False
- map 함수 사용방법
map(함수, 순서가 있는 자료형) ** 순서가 있는 자료형 : 리스트, 튜플, 딕셔너리
map(int,['1','2','3','4'])
<map object at 0x100ad3640>
위의 맵함수 실행 프로세스는 아래와 같다.
['1','2','3','4']
를 int 함수를 적용해서 str을 int로 바군다. 그러면 1,2,3,4를 가지고 있는 map object가 된다.
이 map object를 우리가 원하는 리스트 형태의 데이터로 받고 싶으면 아래와 같이 코드를 작성하면 된다.
list(map(int,['1','2','3','4']))
[1, 2, 3, 4]
- map 함수 사용예시 : 리스트의 모든 요소의 공백을 제거
(1) for 문을 사용했을때
items = [' 맨유차기감독은 ',' 텐아흐 ']
for i in range(len(items)):
items[i] = items[i].strip()
print(items)
['맨유차기감독은', '텐아흐']
(2) map 함수를 사용했을때
def strip_all(data):
return data.strip()
items = [' 맨유차기감독은 ',' 텐아흐 ']
items = list(map(strip_all,items))
print(items)
['맨유차기감독은', '텐아흐']
(3) map함수에 람다함수까지 사용했을때
items = [' 맨유차기감독은 ',' 텐아흐 ']
items = list(map(lambda data:data.strip(),items))
print(items)
['맨유차기감독은', '텐아흐']
- filter 함수 사용방법
filter(함수, 순서가 있는 자료형)
def func(data):
return data < 0
filter(func,[-3,-2,0,5,7])
<filter object at 0x102403d90>
위에 필터함수가 실행되는 프로세스는 아래와 같다.
[-3,-2,0,5,7]
를 func 함수로 넣어서 True 인것들만 뽑아서 -3, -2만 갖고 있는 필터 객체로 갖도록 해서 리턴한다.
- 필터함수 사용예시 : 리스트에서 길이가 3이하인 문자들만 필터링
(1) for 문을 사용했을때
animals = ['cat','tiger','dog','bird','monkey']
result = []
for animal in animals:
if len(animal) <= 3:
result.append(animal)
print(result)
['cat', 'dog']
(2) filter 함수를 사용했을때
animals = ['cat','tiger','dog','bird','monkey']
def word_check(data):
return len(data) <=3
result = list(filter(word_check, animals))
print(result)
['cat', 'dog']
(3) filter 함수에 람다함수까지 사용했을때
animals = ['cat','tiger','dog','bird','monkey']
result = list(filter(lambda data:len(data) <= 3, animals))
print(result)
['cat', 'dog']