강좌와 팁

파이썬 filter, map 날짜:2020-3-13 6:47:41 조회수:161
작성자 : 미로
포인트 : 14
가입일 : 2020-03-07 20:04:07
방문횟수 : 68
글 1개, 댓글 3개
소개 :
작성글 보기
쪽지 보내기
filter 함수의 경우 

1: def less_than_sixty(n):
2:    return n<60
3:
4: score = [10,20,30,70,80,100]
5: 
6: for s in filter(less_than_sixty, score):
7:    print(s)
8:
(좌측 번호는 줄번호)

이렇게 사용할 수 있는데요

2번째 줄의
return n<60 부분에 대해서 map 함수와는 조금 다릅니다.

map 함수 같은 경우 인수로 받는 함수의 리턴값들로 요소를 새로 리스트를 만드는데요

filter 함수는 예를 들어

filter( 처리함수, 대상리스트 )가 있다고 할 때
처리함수의 리턴값이 True인 경우 대상리스트의 해당 요소를 골라냅니다.
즉, if (처리함수의 리턴값) 을 평가해서 True인 경우 그 요소를 골라냅니다.

그래서 이런 식도 가능합니다
filter( None, 대상리스트 )

이렇게 처리함수를 None으로 주면 if (대상리스트의 요소)를 평가해서
True인 경우 그 요소를 골라냅니다
예를 들어서 대상 리스트 안에 ["헬로파이썬","헬로컬렉션","헬로필터"]가 있다면
세 요소 모두 골라냅니다. True로 평가되니까요.
이와 달리 [0, False, '0']만 있다면 
필터 결과는 ['0'] 뿐입니다. 0과 False는 False로 평가되고, '0'은 문자가 하나인 문자열로 True로
평가되기 때문입니다.

요약하면
1. filter 함수는 if (처리함수(대상함수의 각 요소))를 평가해서 True인 것들만 모아 리스트로 반환합니다.
2. map 함수는 참 거짓의 평가 없이 처리함수를 적용하여 그 리턴값들을 모아 리스트로 반환합니다.
 

목록보기 삭제 수정 신고 스크랩


로그인하셔야 댓글을 달 수 있습니다.