반복문에 대해서 설명할 때, List Comprehension에 대해 이야기한 적 있었습니다.

l = [i for i in range(10)]
print(l)
# [0, 1, 2, ..., 9]
l = [i for i in range(1, 101) if not i % 2]
print(l)
# [2, 4, 6, 8, ..., 100]

Python 2에서는 List Comprehension만 지원했으나, Python 3에서는 다른 종류의 comprehension들도 지원합니다.

Set Comprehension

Set순서를 보장하지 않고, 중복을 허용하지 않는 iterable 객체입니다. List Comprehension의 대괄호를 중괄호로 바꿔주기만 하면 됩니다.

s = {i for i in range(10)}
print(s)
# {0, 1, 2, ..., 9}
s = {i for i in range(1, 101) if not i % 2}
print(s)
# {2, 4, 6, 8, ..., 100}

Dictionary Comprehension

Dictionarykey-value 쌍으로 이루어져 있는 iterable 객체입니다. Set Comprehension과 같이 중괄호로 감싸며, key: value 표현을 사용합니다.

d = {i: i ** 2 for i in range(10)}
print(d)
# {0: 0, 1: 1, 2: 4, ..., 9: 81}
d = {i: i ** 2 for i in range(1, 101) if not i % 2}
print(d)
# {2: 4, 4: 16, 6: 36, ..., 100: 10000}

Tuple Comprehension

Python은 공식적으로 Tuple Comprehension을 지원하지 않으나, PEP-448에 Tuple Comprehension을 흉내내는 방법이 제공되어 있습니다. 이는 Python 3.5부터 가능한 표현입니다.

t = *(x for x in range(10)),
print(t)
# (1, 2, 3, ..., 9)


'Python 계열 > Python 레거시 글' 카테고리의 다른 글

[Python] Keyword exclusive argument  (0) 2018.07.11
[Python] 입출력  (0) 2018.07.10
[Python] PEP  (0) 2018.07.08
[Python] 패키지  (0) 2018.07.07
[Python] 모듈  (0) 2018.07.06

+ Recent posts