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']