Python/Python 정리

[Python] 리스트 컴프리헨션(List Comprehension)

우준세 2021. 6. 17. 17:09
728x90
반응형

 

이번 포스팅은 파이썬에서 간결하고 실용적인 기능 

리스트 컴프리헨션에 대해 알아보겠습니다. 


1. 리스트 컴프리헨션(List Comprension)이란?

리스트 컴프리헨션은 리스트를 생성하는 방법 중 하나입니다. 

리스트 대괄호 [ ] 안에 if문과 for문을 사용하여 조건에 만족하는 구문만 리스트로 생성할 수 있습니다.

리스트를 생성하고 for문과 if문을 사용하는 것과 리스트 컴프리헨션을 사용하는 것이 무엇이 차이가 나는지

아래 예제를 통해 알아보겠습니다.

 

 

- 리스트 컴프리헨션을 사용하지 않고 0 ~ 4까지의 정수 리스트를 생성 

list=[]
for i in range(5):
    list.append(i)

print(list)

 

 

 

- 결과 

예상 할 수 있듯이 0 ~ 4 까지의 정수로 리스트를 생성했습니다.

 

 

- 리스트 컴프리헨션을 사용하여 0 ~ 4까지의 정수 리스트 생성 

 

list = [ i for i in range(5) ]

print(list)

 

-결과 

 

똑같은 결과를 내는 코드 이지만 리스트 컴프리헨션을 사용하면 1줄로 작성이 가능하고

조금 더 직관적으로 확인할 수 있습니다. 

 


2. 리스트 컴프리헨션 응용

- 리스트 컴프리헨션을 사용하면 대괄호 안에 수식이나 함수를 적용하여 사용 할 수 있습니다. 

 

> 함수 적용 

 

def func(x):
  x = int(x) + 10
  return x

list = [func(i) for i in range(5)]

print(list)

 

- 결과 

 

 

 

> 수식 적용

 

list = [i+10 for i in range(5)]

print(list)

 

- 결과 

 

 

- 리스트 컴프리헨션 대괄호 안에 조건문을 적용하여 사용할 수 있습니다. 

사실 리스트 컴프리헨션을 사용하는 이유는 이 조건문들을 사용하는게 편리해서 사용하는 것 입니다.

 

 

> if문 사용 

list = [ i for i in range(10) if i%2==0 ]

print(list)

i for i in range(10) 로 i가 0~9 까지 반복합니다.

이때 if % 2 == 0 의 조건을 적용하여 i가 2로 나누어지는 나머지가 0 일때 라는 조건을 걸어 

출력이 나오는 것을 볼 수 있습니다.

 

- 출력

 

 

> if문 여러개 사용 

list = [ i for i in range(10) if i%2==0 if i%4==0]

print(list)

if문을 오른쪽에 여러개 사용하여 조건문을 추가 할 수 있습니다.

 

- 출력 

오른쪽의 if문 두개는 and 조건으로 묶여 동시에 만족하는 것 만 출력하는 것을 볼 수 있습니다. 

즉, 2로 나누어지고 동시에 4로도 나누어 지는 숫자만 출력되었습니다. 

 

 

> if문을 왼쪽에 사용 

list = [i if i%2==0 else '홀수' for i in range(10)]

print(list)

if문을 왼쪽에 사용할 시 반드시 else 문을 같이 사용해야 합니다! 

 

- 출력

if문을 사용하여 짝수의 i 를 출력하게 하였고 나머지는 홀수라는 단어를 출력하게 하였습니다.

 

 

이상 파이썬의 리스트 컴프리헨션에 대해 알아봤습니다.

리스트 컴프리헨션은 직관적이고 코드 작성 줄 수를 줄여준다는 장점도 있고

실제로 속도도 더 빠르게 되는 것을 볼 수 있었습니다.

 

다음 포스팅으로 찾아오겠습니다 :) 

 

728x90
반응형