본문 바로가기
Language/Python

2021 - 04 - 16, Python 학습 - 함수 I

by Cs.Woo 2021. 4. 16.

#1 LAMBDA(람다)

 

` 구성 

lambda argumnet : command

 

함수를 한 줄로 표현하는 방식이다. 예시는 다음과 같다.

 

` 예시

 

## 1 : 두 수를 더하는 함수

def sum_a(i, j):

    return i + j

 

a = sum_a(1, 2) # 3

 

상기와 같은 함수를 lambda를 이용하면 다음과 같이 한 줄로서 표현할 수 있다.

(lambda i, j: i + j)(1, 2) #3

 

#2 Map( )

 맵 함수는 인자로 함수와 리스트를 받는다. 각각의 인자를 받고 리스트 혹은 함수로 부터 원소를 하나씩 꺼내서 적용시킨 다음, 그 결과를 새로운 리스트에 담아서 리턴한다. 구성과 예시는 다음과 같다.

 

` 구성

map( function, list )

 

` 예시

map(lambda i : i * 10, range(10)) // 

list(map(lambda i : i * 10, range(10))) // [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

 

map 함수를 사용하고 난 뒤 리턴된 값은 리스트 안에 담아서 확인할 수 있다.

 

#3 reduce( ) 

 시퀀스에 원소들을 누적하여 함수에 적용시키는 기능을 갖고 있다. 구성과 예시는 다음과 같다.

 

` 구성

from functools import reduce # python 3~

reduce( function, sequence )

 

` 예시

from functools import reduce

reduce(lambda i, j : i + y, [ 0 , 1 , 2 , 3 , 4]  # 10

 

상기의 예시는 리스트에서 0과 1을 더하고 그 값에 2를 더하고 그 값에 3을 더하는 식의 로직이 적용된 상태로 나온 값이 10이되는 것이다.

#4 filter( ) 

 filter는 사용할 리스트에 들어있는 원소들을 함수에 적용시켜서 결과가 참인 값들로 새로운 리스트를 리턴하는 기능을 갖고 있다. 구성과 예시는 다음과 같다.

 

` 구성

filter(function, list)

 

` 예시

filter(lambda i : i < 5, range(10))

list(filter(lambda i : i < 5, range(10))) // [0, 1, 2, 3, 4]

 

 인자로 받은 리스트에서 값을 하나씩 꺼내서 적용할 함수에 적용하고 그 값이 참(True)일 경우에만 리턴하여 새로운 리스트에 담는 기능을 갖고 있다. 이러한 필터로 다음과 같은 로직도 실행할 수 있다.

 

' 예시

list(filter(lambda i: i  % 2, range(10))) // [ 1, 3, 5, 7, 9 ]

 

 파이썬은 참(True)은 1로처리하고 그외의 값은 거짓(False)로 처리하는 것을 이용하여 홀수를 찾는 로직이다.

 

출처 : wikidocs.net/64