본문 바로가기
개발일지/Python

22.03.01 [파이썬 웹개발] map, filter 함수 이용

by 개발에정착하고싶다 2022. 3. 1.
320x100
# 1. map 함수
# - 사용 이유
# 기존 리스트를 수정해서 새로운 리스트를 만들 때 사용

# - 사용 방법
# map(함수, 순서가 있는 자료형)

print(list(map(int,["3","4","5","6"])))


# - 예제
# 리스트 모든 요소의 공백 제거
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) 람다 함수 사용
items = list(map(lambda x:x.strip(),items))
print(items)



# 2. filter 함수
# - 사용 이유
# 기존 리스트에서 조건을 만족하는 요소만 뽑고 싶을 때

# - 사용 방법
# filter(함수, 순서가 있는 자료형)
def func(x):
    return x <0
print(list(filter(func,[-3,2,0,5,7])))

# - 예제
# 리스트에서 길이가 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)

# 3) 람다 함수 사용
result = list(filter(lambda x : len(x)<=3, animals))
# 참 신기하게도 여기서는 0,1,2,3,4로 가는게 아닌 것 같다.
# 1,2,3 식으로 가는 것 같다. 따라서 3글자 이하인 것만 필터링 되서 나온다.
# 그리고 이게 돌아가는 방식이 일종의 for 문 같다. for 는 없어도 animals에 들어있는거에 하나하나씩
# 대입을 한다.

print(result)
300x250