list comprehension

일반적인 for loop보다 빠르게 리스트를 생성할 수 있다

 

그림1. for문과 list comprehension 비교

 

위에가 일반적인 for loop 리스트 생성

 

아래는 list comprehension으로 생성

 

list comprehension이 조금 더 빠르다

 

 

1) 기본형

 

[ x for x in <iterable>]

 

<iterable>에서 x를 뽑아서 x를 리스트에 넣어서 생성

 

그림2 list comprehension 기본형

 

2) 이중for문형

 

[ x+y for x in <iterable1> for y in <iterable2>]

 

<iterable1>에서 x를 뽑은 뒤에 <iterable2>에서 y하나씩 뽑아서 x+y를 넣는다

 

바꿔말하면 

 

for x in <iterable1>   for y in <iterable2>        <list>.append(x+y)

 

그림3. 이중for문이 들어간 list comprehension

 

 

3) 조건문 if

 

[x for x in <iterable> if <condition>]

 

<iterable>에서 x를 하나씩 뽑는데 <condition>에 맞는 경우만 리스트에 넣어준다

 

그림4. 조건문이 들어간 list comprehension

 

4) 조건문 if~else

 

if만 쓰면 for문 뒤에 써야하는데 if~else를 쓰고 싶으면 for문 앞에 쓴다

 

[x if <condition> else y for x in <iterable>]

 

<iterable>에서 x를 뽑아 condition이 맞으면 x를 넣고 아니면 y를 넣는다

 

그림5. if~else 조건문이 들어간 list comprehension

 

5) 응용

 

i나 j만 넣어가는 것이 아니라 원하는 요소를 만들어서 넣을 수 있다

 

그림6. list comprehension의 응용

 

단순히 w를 넣어가는 것이 아니라 [w.upper(),w.lower(),len(w)]를 넣어감

 

그림7. 이차원 리스트 생성

 

첫번째는 i가 먼저 순회하고 j가 순회하지만

 

두번째는 j가 먼저 순회하고 리스트로 들어가서 i가 순회되는 구조

TAGS.

Comments