[python] lambda , map() , filter()
A A

목차

    728x90

    1. lambda 함수 기본 구조

    lambda 매개변수들: 표현식
    
    • 함수 이름 없이 사용하는 익명 함수
    • 간단한 계산이나 함수를 간결하게 표현할 때 사용
    예제
    two = lambda: 2
    sqr = lambda x: x * x
    pwr = lambda x, y: x ** y
    
    for a in range(-2, 3):
        print(sqr(a), end=" ")
        print(pwr(a, two()))
    
    • two()는 항상 2를 반환
    • sqr(a)는 a의 제곱
    • pwr(a, 2)는 a의 2제곱

     

    2. map() 함수와 lambda

    map(함수, 반복가능한객체)
    반복 가능한 객체는 1개 이상일 수 있다.
    예시 코드와 설명은 아래의 주석을 참고한다.
    • 반복 가능한 객체의 각 요소에 함수를 적용
    • map 결과는 이터레이터 → list()로 변환해서 사용
    예제
    list_1 = [x for x in range(5)]
    list_2 = list(map(lambda x: 2 ** x, list_1))
    print(list_2)
    
    for x in map(lambda x: x * x, list_2):
        print(x, end=' ')
    print()
    
    # map의 경우 (function, ...iterable_object) 인자를 사용하여,
    # function에 들어갈 인자값으로 iterable object을 사용하므로,
    # map 자체 인자의 갯수가 여러개 일 수 있다.
    # 예시는 다음과 같다.
    
    a = [1, 2, 3]
    b = [10, 20, 30]
    
    # 두 리스트의 같은 인덱스끼리 더함
    result = list(map(lambda x, y: x + y, a, b))
    print(result)  # [11, 22, 33]
    • 2 ** x로 변환된 값들 출력
    • 그 후 각각을 제곱하여 출력

     

    3. filter() 함수와 lambda

    filter(함수, 반복가능한객체)
    
    • 함수의 조건을 만족하는 요소만 선별
    • True를 반환하는 요소만 남음
    예제
    from random import seed, randint
    
    seed()
    data = [randint(-10, 10) for x in range(5)]
    filtered = list(filter(lambda x: x > 0 and x % 2 == 0, data))
    
    print(data)
    print(filtered)
    
    # filter(function,iterable_object)으로 map과 구성 자체는 같으나
    # iterable object을 fuction을 통해 걸러내야하기 때문에,
    # filter() 자체의 인자는 두개로 고정되어 있다.
    
    a = [1, 2, 3, 4, 5]
    
    # 짝수만 필터링
    result = list(filter(lambda x: x % 2 == 0, a))
    print(result)  # [2, 4]
    • -10 ~ 10 사이의 난수 5개 생성
    • 그중 양수 & 짝수인 값만 필터링

     

    정리

      형식 설명
    lambda lambda x: 표현식 익명 함수 (간단한 함수 정의)
    map() map(함수, 리스트) 모든 요소에 함수 적용
    filter() filter(조건함수, 리스트) 조건을 만족하는 요소만 추출
    Copyright 2024. GRAVITY all rights reserved