hyei-devlog

[파이썬 문법 체크] 컴프리헨션(comprehension) 본문

Python

[파이썬 문법 체크] 컴프리헨션(comprehension)

winter126 2025. 1. 31. 01:17

💡 컴프리헨션 (comprehension)

Python의 컴프리헨션(comprehension) 문법은 기존 시퀀스(sequence), 이터러블(iterable), 또는 다른 표현식들로부터 새로운 시퀀스를 생성하는 간결하고 가독성 있는 방법이다.

 

Python에서는 몇 가지 타입의 컴프리헨션을 사용할 수 있다:

리스트 컴프리헨션, 딕셔너리 컴프리헨션, 세트 컴프리헨션, 제너레이터 컴프리헨션

 

🧐 컴프리헨션 문법은 2중 for문 등을 사용하지 않도록 권장한다! google convention에도 동일하게 권고하고 있다.
만약 2중으로 써야 할 경우 문법을 풀어서 쓰길 권장한다.

 

 

1. 리스트 컴프리헨션: 리스트 컴프리헨션은 가장 일반적으로 사용되며, 대괄호([]) 사이에 표현식과 for문을 넣어 리스트를 생성한다. 필터링을 위해 if문을 추가할 수도 있다.

squares = [x**2 for x in range(10)]  # 0부터 9까지의 제곱 리스트 생성
even_squares = [x**2 for x in range(10) if x % 2 == 0]  # 0부터 9까지의 짝수의 제곱 리스트 생성

 

 

2. 딕셔너리 컴프리헨션: 딕셔너리 컴프리헨션은 중괄호({}) 안에 for문과 선택적 if문을 사용하여 딕셔너리를 생성한다. 표현식 부분에서 key: value 형태를 사용한다.

square_dict = {x: x**2 for x in range(5)}  # 0부터 4까지의 수를 키로, 그 제곱을 값으로 하는 딕셔너리 생성
square_dict 

books = ['python', 'javascript', 'html/css']
book_dict = {book: idx for idx, book in enumerate(books)}
book_dict

 

 

3. 세트 컴프리헨션: 세트 컴프리헨션은 중괄호({}) 안에 for문과 선택적 if문을 사용하여 세트를 생성한다.

odd_set = {x for x in range(10) if x % 2 != 0}  # 0부터 9까지의 홀수

 

 

4. 제너레이터 컴프리헨션: 제너레이터 컴프리헨션은 소괄호(()) 안에 for문과 선택적 if문을 사용하여 제너레이터 객체를 생성한다. 제너레이터는 반복을 위한 이터러블이지만, 모든 값을 메모리에 저장하지 않고 필요할 때마다 생성한다.

square_gen = (x**2 for x in range(10))  # 0부터 9까지의 제너레이터

gen = (i for i in range(2, 100000000, 2))
for i, j in zip(range(10), gen):
    print(i, j)