Python에서 Comprehension을 통해 짧고 간결한 방식으로 새로운 컬렉션(list, set, dict 등)을 생성할 수 있다. Tuple Comprehension은 없고 대신 Generator라고 한다.
Comprehension(컴프리헨션)은 반복문과 조건문을 한 줄로 표현하여 새로운 컬렉션을 생성하는 문법이다.
List Comprehension(리스트 컴프리헨션)은 기존 list나 iterable에서 새로운 list를 한 줄로 간결하게 생성하는 방법이다.
[<expression> for <i> in <iterable> if <condition>]
<expression>: 새로운 리스트의 각 element에 대한 식for <i> in <iterable>: iterable 객체의 각 element를 순회if <condition>: 특정 조건에 맞는 element만 리스트에 포함시킴 (선택 사항)# for loop
squares_even = []
for x in range(10):
if x % 2 == 0:
squares_even.append(x**2)
# List Comprehension
squares = [x**2 for x in range(10) if x % 2 == 0]
Nested List Comprehension은 for문을 다중으로 사용하는 방법이다.
[<expression> for <i> in <iterable 1> for <j> in <iterable >]
[[<expression> for <i> in <iterable 1>] for <j> in <iterable 2>]
Set Comprehension(세트 컴프리헨션)은 새로운 set를 한 줄로 간결하게 생성하는 방법이다. List comprehension과 비슷하지만 정해진 순서가 없고, 중복 없이 값을 저장한다.
{<expression> for <i> in <iterable> if <condition>}
<expression>: 새로운 세트의 각 element에 대한 식for <i> in <iterable>: iterable 객체의 각 element를 순회if <condition>: 특정 조건에 맞는 element만 세트에 포함시킴 (선택 사항)# for loop
unique_squares = set()
for x in range(10):
unique_squares.add(x**2)
# Set Comprehension
unique_squares = {x**2 for x in range(10)}
Dictionary Comprehension(딕셔너리 컴프리헨션)은 키-값 쌍으로 구성된 새로운 dictionary를 한 줄로 간결하게 생성하는 방법이다.