728x90

015. 함수 filter, lambda

 

 

일단 필터함수랑 람다함수 각각 먼저 알아보자

 

1.filter()

  • 걸러낸다는 뜻. 함수도 동일한 의미
  • 두번째 인수(반복 가능한 자료형) 첫 번째 인수(함수명)에 입력되었을 때,  '반환 값이 참인 것만 걸러 내서 돌려준다.'

 

1)형태

filter(function, iterable)
filter(함수명, 반복가능한 자료형)

 

2)세부 내용

filter(함수명, 반복가능한 자료형)

  • 함수명(function) : True or False로만 반환
  • 반복가능한 자료형(iterable) : 함수에 차례로 들어갈 반복 가능한(iterable) 인수(instance)
instance
클래스로 만든 객체

 - 객체와 구분, 어떤 클래스의 객체인지 관련지어 얘기할 때 인스턴스라고 부른

 

3)특징

  • 여러 데이터 중에 일부만 추려낼 때 사용
  • 따라서, 보통 list,tuple을 대상으로 주로 사용함
  • filter()는 filter값으로만 리턴함
  • 결과값이 참인 것만 결과값을 돌려줌. False는 다 버리고 True만 줌
  • filter() 함수의 결과값을 list로 변환하는 가장 쉬운 방법은 list() 내장 함수를 사용하는 것.
  • 마찬가지로 tuple도 내장함수 tuple() 사용

 

이제 직접해보자

보다시피 filter()가 filter값으로 낸다는 의미를 알것이다. 이상한 숫자와 알파벳이 섞여있다

이를 사람이 알기 쉽게 변환할 수 있도록 하는게 list나 tuple로 바꿔주는 것이다. 그래서 아래에서 list()를 추가하였고, 

0보다 큰 [1,2] 값을 리턴한 것.

 

filter() 함수를 쉽게 한마디로 설명하자면 def 함수와 연계하여 함수의 조건을 충분하는 True값만 걸러서 추출한다고 생각하면 되겠다

 


2.lambda

def와 동일한 역할을 하는 녀석

1)형태

lambda 매개변수1,매개변수2... : 매개변수를 이용한 표현식

 

* 매개변수(parameter)와 인자(arguement)란?

def add(x,y):  # (x,y)가 매개변수(parameter)
	return x + y
    
z = add(4,-5)  # (4,-5)가 인자(argument)
print(z)

위의 def 함수를 lambda 함수로 전환해보면,

# lambda 함수로 변환

add = lambda x,y : x + y
z = add(4,-5)
print(z)

실제로 해보면, 결과값 또한 똑같게 잘나온다

 

2)특징

언제 사용하는가?

def를 사용할 필요없이 간단하거나, def를 사용할 수 없는 곳에 주로 사용

위의 filter() 함수식은 람다함수를 사용하면 더 간편하게 코드 작성가능

 

 

 

728x90
반응형

+ Recent posts