728x90
파이썬에서 사용할 수 있는 컴프리헨션은 List, Set, Dict 컴프리헨션이 있고, 이번 포스팅에서는 대표적으로 List로 컴프리헨션에 대해 알아보자.
List 컴프리헨션이란 반복되거나 특정 조건을 만족하는 리스트를 보다 쉽게 만들어 내기 위한 방법으로 아래와 같이 사용할 수 있다.
>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [i * 2 for i in range(5)]
[0, 2, 4, 6, 8]
위와 같이 반복문을 사용하는 것 외에도 조건문을 추가로 사용하여 리스트를 만들 수 있다.
>>> [i for i in range(20) if i % 2 == 0]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> [i * 3 for i in range(20) if i % 3 == 0]
[0, 30, 60, 90, 120, 150, 180]
위와 같이 반복문과 조건문을 함께 사용하여 리스트를 생성할 수 있다. 반복문의 인자가 뒤에 적어준 조건문에 부합하는지를 확인하여 그 인자를 리스트 요소로 추가하는 방식이다. 단순히 하나의 반복문, 조건문뿐 아니라 반복문이나 조건문을 여러개 이용하는 것도 가능하다.
# 반복문
>>> a = ['a', 'b', 'c']
>>> b = ['1', '2', '3']
>>> [i + j for i in a for j in b]
['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
# 조건문
>>> [i for i in range(50) if i % 2 == 0 if i % 3 == 0]
[0, 6, 12, 18, 24, 30, 36, 42, 48]
조건문에서 else사용도 가능하지만, elif는 사용할 수 없다.
>>> ['even' if i % 2 == 0 else 'odd' for i in range(10)]
['even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd']
※ List, Set, Dict Comprehension / Generator Expression의 기본 사용법
# List
lc = [i for i in range(10)]
# Set
sc = {i for i in range(10)}
# Dictionary
tp = [('math', 90), ('history', 80), ('english', 95), ('computer engineering', 100)]
dc = {t[0]: t[1] for t in tp}
# Generator
ge = (x for i in range(10))
※ generator?
728x90
'🐍Python | Django' 카테고리의 다른 글
[Python] Exception 추적 (0) | 2022.05.23 |
---|---|
[Python] Duck Typing? (0) | 2022.05.22 |
[Python] Type Check - type(), isinstance() (0) | 2022.05.18 |
[Python] lstrip(), rstrip(), strip() (0) | 2022.05.17 |
[Python] __new__ ? __init__ ? (0) | 2022.05.16 |