[파이썬 입문] 3. 제어문과 컬렉션 – 7) 리스트 컴프리헨션

for문 이용

리스트 컴프리헨션은 반복 혹은 특정 조건의 요소들로 새 리스트를 만드는 방법입니다.

이해를 위해 리스트 컴프리헨션을 사용하지 않고 새 리스트를 만드는 예제를 먼저 보여드릴게요.

다음은 1부터 20까지 3간격의 요소를 리스트에 순차 보관하는 코드입니다.

[In]
ls = []
for x in range(1,20,3):
  ls.append(x)
print(ls)
[Out]
[1, 4, 7, 10, 13, 16, 19]

리스트 컴프리헨션으로 표현하면 다음처럼 표현할 수 있어요.

변수 = [표현 for 변수 in 컬렉션]

[In]
ls = [x for x in range(1,20,3)]
print(ls)
[Out]
[1, 4, 7, 10, 13, 16, 19]

for문 if 사용

이번에는 for문과 if를 사용하는 리스트 컴프리헨션을 알아봅시다.

마찬가지로 리스트 컴프리헨션을 사용하지 않는 코드를 먼저 보여드릴게요.

이번에는 1에서 19까지 3의 배수와 5의 배수로 리스트를 구성합니다.

[In]
ls=[]
for x in range(1,20):
  if x%3 == 0 or x%5==0:
    ls.append(x)
print(ls)
[Out]
[3, 5, 6, 9, 10, 12, 15, 18]

리스트 컴프리헨션은 다음처럼 표현할 수 있어요.

변수 = [표현 for 변수 in 컬렉션 if 조건]

[In]
ls = [x for x in range(1,20) if x%3==0 or x%5 == 0]
print(ls)
[Out]
[3, 5, 6, 9, 10, 12, 15, 18]

for문 if else 사용

이번에는 for문과 if else를 사용하는 리스트 컴프리헨션을 알아봅시다.

마찬가지로 리스트 컴프리헨션을 사용하지 않는 코드를 먼저 보여드릴게요.

이번에는 1에서 19까지 3의 배수와 5의 배수는 그대로 그 외의 값은 음수를 리스트에 추가할게요.

[In]
ls=[]
for x in range(1,20):
  if x%3 == 0 or x%5==0:
    ls.append(x)
  else:
    ls.append(-x)
print(ls)
[Out]
[-1, -2, 3, -4, 5, 6, -7, -8, 9, 10, -11, 12, -13, -14, 15, -16, -17, 18, -19]

리스트 컴프리헨션은 다음처럼 표현할 수 있어요.

변수 = [표현1 if 조건 else 표현2 for 변수 in 컬렉션 ]

표현1은 if 조건이 참일 때, 표현 2는 else 일 때

[In]
ls = [x if x%3==0 or x%5 == 0 else -x for x in range(1,20) ]
print(ls)
[Out]
[-1, -2, 3, -4, 5, 6, -7, -8, 9, 10, -11, 12, -13, -14, 15, -16, -17, 18, -19]

리스트 컴프리헨션 표현은 데이터 분석, 빅데이터, 머신러닝 등의 분야에서 자주 사용하는 표현입니다.