컴프리헨션이란?

    압축해서 한 줄 짜리 코드로 만드는 것인데 이유는 이것이 더 직관적이고 속도가 빠르기 때문이다.

    컴프리헨션에는 리스트, 딕셔너리, 셋(집합) 형태가 있다.

 

    1. 기본 형태 : 리스트 = [표현식   for   항목    in    반복가능객체    (if 조건문)]

a_list = [1, 5, 9, 28, 6]

##############

b_list = [a*2 for a in a_list if a % 2 == 0]

# 위와 아래는 같은 코드임

b_list = []

for a in a_list:
    if a % 2 == 0:
        b_list.append(a*2)

##############

print(b_list)

 

    2. 함수나 수식

def test(x):
    return x + 2


data_dictionary = {a : test(a) for a in range(5)}

print(data_dictionary)

 

    3.두개의 조건문, 두개의 for문

mix_list = []

for i in range(3):
    for j in range(5):
        mix_list.append({i, j})
# 괄호 개수 주의
# TypeError: append() takes exactly one argument (2 given)


mix_list = ({i, j} for i in range(3) for j in range(5))
#리스트는 실행되지만 튜플은 오류를 낸다. <generator object <genexpr> at 0x000001C1A83B0510>

print(mix_list)

    위에서 보았듯이 튜플에 담으면 에러를 낸다. 여기서는 ( 괄호가 ) generator expression을 만드는 수식으로 인식하기 때문이다.

 

https://winterakoon.tistory.com/65

 

제너레이터(generator)

제너레이터란? 지연 평가 구현체(lazy evaluation) 즉, 값이 필요할 때 계산해주는 객체이다. 파이썬의 모든 지연 평가 구현체(lazy evaluation)는 이터레이터라고 한다. 이터레이터를 만드는 도구이다.

winterakoon.tistory.com

 

'Python' 카테고리의 다른 글

[Python] 제너레이터(generator)  (0) 2023.03.22
[Python] 이터레이터(Iterator)  (0) 2023.03.22
[Python] 패킹과 언패킹  (1) 2023.03.22
[Python] lambda식  (0) 2023.03.21
[Python] 함수(function)  (0) 2023.03.21

+ Recent posts