logo

파이썬의 컴프리헨션 문법 📂프로그래밍

파이썬의 컴프리헨션 문법

설명

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}