Home [Better Way #27] map과 filter 대신 컴프리헨션을 사용하라
Post
Cancel

[Better Way #27] map과 filter 대신 컴프리헨션을 사용하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”“Chapter 04. Comprehensions and Generators”을 읽고 정리한 내용입니다.


리스트, 딕셔너리, 집합 등을 다룰 때 mapfilter를 사용하기보다는 컴프리헨션을 사용하는 것을 권장한다.

  • map, filter 사용 버전

    1
    2
    3
    4
    5
    6
    7
    
    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    alt_list = list(map(lambda x: x**2, filter(lambda x: x % 2 == 0, a)))
    alt_dict = dict(map(lambda x: (x, x**2),
                        filter(lambda x: x % 2 == 0, a)))
    alt_set = set(map(lambda x: x**3,
                        filter(lambda x: x % 3 == 0, a)))
    
  • 리스트 / 딕셔너리 / 집합 컴프리헨션 사용 버전

    1
    2
    3
    
    even_squares_list = [x**2 for x in a if x % 2 == 0]
    even_squares_dict = {x: x**2 for x in a if x % 2 == 0}
    threes_cubed_set = {x**3 for x in a if x % 3 == 0}
    
This post is licensed under CC BY 4.0 by the author.

[Better Way #26] functools.wraps을 사용해 함수 데코레이터를 정의하라

[Better Way #28] 컴프리헨션 내부에 제어 하위 식을 세 개 이상 사용하지 말라