728x90
Python은 리스트, 딕셔너리, 세트 등의 컬렉션을 간결하게 생성할 수 있도록 comprehension이라는 것을 제공한다.
컴프리헨션을 사용하면 반복문과 조건문을 결합하여 간결하게 컬렉션을 만들 수 있는데, 사용방법을 알아보자.
리스트 컴프리헨션(List Comprehension)
# 리스트 컴프리헨션
squares = [x**2 for x in range(1, 11)]
print(squares)
1부터 10까지의 정수의 제곱을 리스트로 만드는 리스트 컴프리헨션의 예제 코드다.
딕셔너리 컴프리헨션(Dictionary Comprehension)
# 딕셔너리 컴프리헨션
square_dict = {x: x**2 for x in range(1, 6)}
print(square_dict)
1부터 5까지의 정수를 key로 하고 정수의 제곱을 value로 하는 딕셔너리를 생성하는 딕셔너리 컴프리헨션의 예제 코드다.
# 딕셔너리 컴프리헨션
games = ["lol", "overwatch", "maplestory"]
fps = [144, 80, 157]
dict = {key:value for key, value in zip(games, fps) }
print(dict)
3가지 게임과 각 게임의 주사율을 key와 value로 하는 딕셔너리를 생성하는 딕셔너리 컴프리헨션의 예제 코드다.
세트 컴프리헨션(Set Comprehension)
# 집합 컴프리헨션
even_set = {x for x in range(1, 11) if x % 2 == 0}
print(even_set)
1부터 10까지의 정수 중 짝수를 원소로 하는 집합을 생성하는 세트 컴프리헨션의 예제 코드다.
그렇다면 튜플(tuple)은?
gen = (x**2 for x in range(1,11)) # 제너레이터
tup = tuple(gen) # 튜플
print(gen)
print(type(gen))
print(tup)
print(type(tup))
>> <generator object <genexpr> at 0x0000024FB1BB0430>
>> <class 'generator'>
>> (1, 4, 9, 16, 25, 36, 49, 64, 81, 100)
>> <class 'tuple'>
아쉽게도 튜플은 따로 컴프리헨션이 없다. 하지만 제너레이터를 이용하여 튜플 역시 간결하게 생성할 수 있다.
'Python' 카테고리의 다른 글
Python 함수 선언 방법, 변수 지역성 (0) | 2024.03.27 |
---|---|
Python 이터러블(iterable)과 반복자(iterator) (0) | 2024.03.27 |
Python 라이프 사이클과 reference count (0) | 2024.03.27 |
Python 깊은복사 vs 얕은복사 (0) | 2024.03.27 |
Python 변수와 메모리 (0) | 2024.03.27 |