ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 220714_부트캠프시작_python_2주_4일차 (복기)
    bigdata_bootcamp_12th/daily review 2022. 7. 14. 23:12

    1. lambda, map, reduce

     

    1) lambda (람다 표현식)

    - 형식

    ex)                                                  # ex = [ 1, 2, 3, 4, 5 ]               
    lambda 매개변수 : 식 if 조건식      #  lambda a : a**2 if type(a) == int , ex[0]
                                                          #  입력받은 값 ex[0]의 값이 정수라면 제곱을 해라

     

    def 함수(a) :
        a = a**2
        return a

    => 함수와 매우 유사한 구조를 가지고 있다.

    - 장점 : 연산속도가 함수사용시 보다 빠르다고 한다.

    - 단점 : 복잡한 계산을 넣으면 나같은 초보자는 보기도 힘들다.

     

    - 여기서 ex를 그냥 넣는게아니라 ex[0]을 넣는 점에서 map과 시너지를 이룬다면 정말 좋다.

     

    2) map

    - 형식

    ex)                                                                                           # func = 대충 제곱하는 함수 , ex = [ 1, 2, 3, 4, 5 ]   
    map ( 함수, 이터레이블( 반복 가능한 자료형 list, tuple 등.. )  # map( func, ex)

     

    위 람다에서는 ex[0], ex[1] 이런식으로 따로 값을 입력해준다면

    map은 이터레이블 자료형 객체를 넣어 차례로 인덱스하여 값을 써준다.

     

    3) lambda와 map의 시너지

    list( map( lambda a : a**2, ex))    # 함수대신 lambda 이용, 리스트 ex 이용

    =
    [ 1, 4, 9, 16, 25 ]

    list ex[0] ~ [4], 즉 1~5까지 하나씩 차례로 lambda 함수문을 이용한다고 생각하면된다.

    다만 map은 true or false 값으로 나오고 <map at 0x7efd6c702ad> 같은 지수 배당값으로 출력이 되서

    list로 다시 묶어 해당 값들을 보기좋게 보관한다.

     

     

    4) reduce

    - 반복 가능한 객체의 각 요소를 지정된 함수로 처리한 뒤 이전 결과와 누적해서 반환

    - functools 모듈에서 reduce 함수를 가져와야 함

    - 형식

    reduce(함수, 이터레이블( 반복 가능한 자료형 list, tuple 등.. ),initializer=None)

    - 역시 lambda와 시너지가 좋다.

    test2 = [{'name' : '신짱구', 'age' : 5}, {'name' : '신짱아', 'age' : 4}, {'name' : '흰둥이', 'age' : 8}]
    avg_age = [n['age'] for n in test2]
    reduce(lambda x ,y : x + y, avg_age)/len(avg_age)
    avg_age 라는 리스트에 'age'키의 값을 먼저 나열하고 
    reduce 와 lambda를 이용해 순차적으로 더한다
    그리고 'age' 키의 갯수로 나누어 평균을 구한다.

     

     

     

Designed by Tistory.