파이썬의 컴프리헨션 문법
설명
for 반복문으로 어떤 객체를 만들어낼 때, 반복문 자체를 객체 내부에 기입하는 형식의 문법을 컴프리헨션comprehension이라 한다. 가독성이 좋은 방법이며 파이썬에서는 리스트, 집합, 딕셔너리 컴프리헨션을 지원한다. 긴 설명보다는 아래의 예시로 보자.
코드
리스트
제곱수의 리스트를 만들 때 가장 기본적인 방법은 다음과 같다.
>>> squares = []
>>> for i in range(1, 7):
... squares.append(i**2)
# [1, 4, 9, 16, 25, 36]
컴프리헨션이란 아래와 같이 리스트 내부에 for 반복문을 작성하는 것을 말한다.
>>> squares = [i**2 for i in range(1, 7)]
# [1, 4, 9, 16, 25, 36]
조건문을 추가하거나 중첩 반복문도 가능하다. 다만 이런식으로 반복문 자체가 복잡해지면 일반적인 반복문 문법이 더 읽기 쉬울 수 있다.
>>> odd_squares = [i**2 for i in range(1, 7) if i % 2 != 0 ]
# [1, 9, 25]
>>> tuples = [(i, j) for i in range(3) for j in range(2)]
# [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
집합과 딕셔너리
집합과 딕셔너리에도 같은 방식으로 사용할 수 있다.
>>> fruits = {len(word) for word in ["apple", "banana", "pear", "orange"]}
# {4, 5, 6}
>>> word2len = {word: len(word) for word in ["apple", "banana", "pear"]}
# {'apple': 5, 'banana': 6, 'pear': 4}