본문 바로가기

PYTHON

comprehension

- 여러개 값을 동시에 만드는 기법 
- 반복문에 비해서 간결함 

1. iterable container 객체 생성
(1) List Comprehension(LC)

- 0~9 에서 각 값의 제곱인 LC

- 0~9에서의 값을 str인 LC

- for 문(statement)이 아니라 식
- functional programming에서는 for문을 지양함

[str(x) for x in range (10)] 
==> ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

[x*x for x in range (10)]  
==> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# filtering
[ x for x in range(10) if x%2==0] # 짝수
==> [0, 2, 4, 6, 8]

# list 값이 5보다 작으면 2, 크면 그 값 그대로 출력
[ 2 if i < 5 else i for i in range(10)] #삼항 연산자
==> [2, 2, 2, 2, 2, 5, 6, 7, 8, 9]


#for 문에 비해서 실행 속도가 빠르고 코드가 간결
%%timeit
temp=[]
for i in range(1000):
    temp.append(i)
==> 70.7 µs ± 4.93 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
    

%%timeit
[x for x in range(1000)]
==> 39.4 µs ± 5.9 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)


(2) Set Comprehension (SC)

{x for x in range(5)} #set
==> {0, 1, 2, 3, 4}


(3) Dict Comprehension (DC) 

{str(x):x for x in range(10)} #dict
==> {'0': 0,
 '1': 1,
 '2': 2,
 '3': 3,
 '4': 4,
 '5': 5,
 '6': 6,
 '7': 7,
 '8': 8,
 '9': 9}


(4) Generator Comprehension (GE) 
- expression 이라 불림
- tuple comp
- generator function:함수에 def yield or yield from

'PYTHON' 카테고리의 다른 글

MAP  (0) 2020.11.20
Generator  (0) 2020.11.20
dis  (0) 2020.11.19
enumerate  (0) 2020.11.19
iterable  (0) 2020.11.19