Comprehension이란?


컴프리헨션(Comprehension)은 원하는 데이터를 파이썬에서 제공하는 자료구조(list, dictionary, set)에 담아 표현하려할 때 사용할 수 있는 문법으로 종류는 4가지입니다.

  1. list 컴프리헨션
  2. dictionary 컴프리헨션
  3. set 컴프리헨션
  4. generator 컴프리헨션

 

 

 

list 컴프리헨션


[1, 6) 순차열이 담긴 list 컨테이너를 생성하기 위해선 어떻게 해야 할까요?

>>> number_list = []
>>> number_list.append(1)
>>> number_list.append(2)
>>> number_list.append(3)
>>> number_list.append(4)
>>> number_list.append(5)
>>> number_list
[1, 2, 3, 4, 5]

 

위와 같이 빈 list 컨테이너를 생성한 후, append() 멤버 함수를 이용해 원소를 1개씩 추가해주는 방법이 있습니다. 또는 반복문을 이용해 코드를 좀 더 단축시킬 수도 있습니다.

>>> number_list = []
>>> for number in range(1, 6):
        number_list.append(number)

>>> number_list
[1, 2, 3, 4, 5]

 

또는, list() 전역 함수와 range() 전역 함수를 사용해 코드를 좀 더 단축시킬 수도 있습니다.

>>> number_list = list(range(1, 6))
>>> number_list
[1, 2, 3, 4, 5]

 

위의 3가지 방법 모두 괜찮은 방법이지만, 파이썬의 '컴프리헨션' 문법을 이용하면 훨씬 더 괜찮게 표현할 수 있습니다.

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

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

 

만약 구간 [1, 6)에서 홀수 값만이 담긴 list 컨테이너를 생성하고 싶다해도 '컴프리헨션'을 이용하면 간단히 표현할 수 있습니다.

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

 

'Programming > Python' 카테고리의 다른 글

[Python] 파일 입출력  (0) 2019.06.11
[Python] private 네임 맹글링  (0) 2019.06.10
[Python] 클래스(class)  (0) 2019.06.10
[Python] 클로저(Closure)  (0) 2019.06.07
[Python] list, tuple, dictionary, set 자료구조  (0) 2019.06.05