superkind
1/4/2018 - 3:16 AM

컴프리헨션 #python #tutorial

컴프리헨션 #python #tutorial

컴프리헨션

comprehension(함축)은 하나 이상의 iterator 로부터 파이썬의 자료구조를 만드는 콤팩트한 방법이다.

리스트 컴프리헨션

[표현식 for 항목 in 순회 가능한 객체]

number_list = [number for number in range(1, 6)]    # [1, 2, 3, 4, 5]
number_list = [number-1 for number in range(1, 6)]  # [0, 1, 2, 3, 4]

리스트 컴프리헨션은 다음과 같은 조건 표현식을 포함할 수 있다.

[표현식 for 항목 in 순회 가능한 객체 if 조건]

1에서 5까지 홀수 리스트를 만드는 예제.

a_list = [number for number in range(1, 6) if number % 2 == 1]      # [1, 3, 5]

중첩 컴프리헨션

rows = range(1,4)
cols = range(1,3)
cells = [(row, col) for row in rows for col in cols]
for cell in cells:
    print(cell)

딕셔너리 컴프리헨션

{키표현식: 값표현식 for 표현식 in 순회 가능한 객체}

word = 'letters'
letter_counts = {letter: word.count(letter) for letter in set(word)}
# {'t': 2, 'l': 1, 'e': 2, 'r': 1, 's': 1}

셋 컴프리헨션

{표현식 for 표현식 in 순회 가능한 객체}

a_set = {number for number in range(1,6) if number % 3 == 1}    # {1, 4}

제네레이터 컴프리헨션

튜플은 컴프리헨션이 없으며 괄호를 사용하면 제네레이터 객체를 반환한다. 제네레이터는 이터레이터에 데이터를 제공하는 하나의 방법이다. 제네레이터는 값을 기억하지 않고 즉석에서 값을 생성하고, 이터레이터를 통해 한 번에 값을 하나씩 처리한다.

number_thing = (number for number in range(1, 6))
for number in number_thing:
    print(number)