IT/프로그래밍

[파이썬] 파이썬 람다함수 [패스트 캠퍼스 챌린지 31일]

뜻밖의 행복 2022. 2. 23. 18:23
반응형

안녕하세요? 뜻밖의 행운 입니다. 

패스트 캠퍼스 도전 31일차 

돈의 힘으로 꾸준히 듣고 있습니다. 

그래도 이제 듣는 시간도 늘리고 매일 습관화 하면 

저에게 큰 자산이 될 듯 싶네요 

이렇게 운동도 열심히하고 다른 공부도 계속 해간다면 

더 나은 삶을 살 수 있겠죠

 

오늘은 함수 중급의 마지막

map, filter 함수에 대해서 배웠습니다.

 

map 함수

기존에 있는 리스트를 수정하여 새로운 리스트를 만들고자 할 때 사용합니다.

이것은 for 문이나 직접 함수를 정의해서도 가능하나 

이미 있는 map 함수를 사용하여 한다면 역시 코드를 간결하게 할 수 있어 사용합니다.

 

사용방법

 map(함수, 순서가 있는 자료형) 형식으로 사용하면 됩니다. 

예를들면 

print(list(map(int, ['1', '2', '3', '4'])))

네 1,2,3,4 가 저장된 리스트 안에 있는 데이터를 정수형으로 바꾸는 것인데요 

기존에 함수를 이용한다면 함수를 정의하고 호출하면서 여러줄로 표현해야 할 것을

한 줄로 가능합니다. 

이중 pirnt는 기능을 확인하기 위함이니 빼도 됩니다.

 

# 리스트의 모든 요소의 공백 제거
items = ['  좌우여유롭다.  ', '  위아래는  ']

#1 for 문으로 구현
 for i in range(len(items)):
     items[i] = items[i].strip()
 print(items)

# 2 map 을 이용하여 구현
 def strip_all(x):
     return x.strip()
 items = list(map(strip_all, items))
 print(items)

# 3 map과 람다의 콜라보
items = list(map(lambda x : x.strip(), items))
print(items)

map 과 람다를 함께 사용하면 저렇게 더 간결하게 구현이 가능합니다.

 

잘 동작 하는게 보입니다.

 

filter 함수

이름 값 하는 함수로 기존에 있는 리스트에서 특정 조건을 만족하는 데이터만 뽑아야 할 때 

사용합니다. 역시 별도의 함수를 정의하거나 해서 가능하지만

바퀴를 새로 발명하지 말아라 네!

우리는 있는 것을 그저 가져다 사용하면 됩니다.

 

map 함수랑 사용하는 방법도 거의 똑같습니다.

filter(함수, 순서가 있는 자료형) 형식으로 사용하면 됩니다.

# 리스트에서 길이가 3 이하인 문자들만 추출하고자 할 때
animals = ['cat', 'tiger', 'dog', 'bird', 'monkey']

# 1 for 를 사용하여 구현
 result = []
 for i in animals:
     if len(i) <= 3:
         result.append(i)
 print(result)

# 2 filter 를 사용하여 구현
 def word_check(x):
     return len(x) <= 3
 result = list(filter(word_check, animals))
 print(result)

# filter와 람다를 활용하여 구현
result = list(filter(lambda x : len(x) <= 3, animals))

역시  map과 filter를 함께 사용한다면 더욱 간략하게 구현이 가능합니다.

 

네 정말 잘 구현되는게 보입니다.

 

 

 

반응형