ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 컴프리헨션(Comprehension)
    Python 2022. 2. 4. 11:19
    SMALL

    Definition

    하나 이상의 순회 가능한 객체로부터 파이썬의 자료구조(리스트, 딕셔너리, 셋, 제너레이터)를 만드는 방법

     

     (1) List Comprehension

    1~5까지의 정수를 저장하는 리스트를 만드는 방법

    nums = [1,2,3,4,5]
    nums=[]
    nums.append(1)
    ...
    nums.append(5)
    nums[]
    for n in range(1,6):
    	nums.append(n)
    nums=list(range(1,6))

    위 방법들보다 더 간단하게 표현할 수 있는 방법이 바로 리스트 컴프리헨션이다.

    #형식: [(식) for (항목) in (itrable object)]
    nums=[n for n in range(1,6)] #[1,2,3,4,5]

    이 외에도 기존 방법들보다 더 다양한 형태의 리스트를 만들 수 있다.

    numString = [str(n) for n in range(1,6)] #['1','2','3','4','5']
    evenNum = [n for n in range(1,6) if n % == 0] #[2,4]
    matrix = [(row, col) for row in [1,2,3] for col in [1,2]] 
    #[(1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)]

     (2) Dictionary Comprehension

    #형식: {(키 표현식):(값 표현식) for (항목) in (iterable object)}
    #예시
    s = 'Python is easy to learn'
    count = {letter:s.count(letter) for letter in s}
    #count = {'P': 1, 'y': 2, 't': 2, 'h': 1, 'o': 2, 'n': 2, ' ': 4, 'i': 1, 's': 2, 'e': 2, 'a': 2, 'l': 1, 'r': 1}

    (3) Set Comprehension : 순서가 없는 리스트와 다름없기 때문에 리스트 컴프리헨션과 비슷하지만, [ ] 대신 { }를  사용한다.

     

    (4) Generator Comprehension

    역시 리스트 컴프리헨션과 비슷하지만, [ ] 대신 ( ) 를 사용한다.

    아래는 0 ~ 9 사이 정수 중 홀수 를 list 와 generator object 로 생성한 예제이다. 

    >>> [ i for i in xrange(10) if i % 2 ]
    [1, 3, 5, 7, 9]
    >>> ( i for i in xrange(10) if i % 2 )
    <generator object <genexpr> at 0x7f6105d90960>

     

     

    반응형

    'Python' 카테고리의 다른 글

    [Python]파이썬 알고리즘 풀 때 기초적인 skill들  (0) 2021.12.30

    댓글

Designed by Tistory.