🐍Python | Django

[Python] Comprehension?

이줭 2022. 5. 20. 17:34
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?

https://dev-jy.tistory.com/21

 

[Python] generator

generator를 간단히 설명하면, iterator를 생성해주는 function이다. ※ iterator? https://dev-jy.tistory.com/20 [Python] iterable? iterator? iterable? iterator? iterable의 의미는 요소를 하나씩 차례로 반..

dev-jy.tistory.com

 

참고 : https://doorbw.tistory.com/174

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