최근에 많은 사람들이 파이썬을 사용하면서, 관련 소스나 자료들이 많아 공부하기 좋다. 하지만 다른 고수(?)들이 작성해 놓은 코드를 보면 문법적으로 이해하기 어려울 때도 많다. 그 중에 하나가 for문과 if문을 한 줄에 써 넣은 경우이다.

오늘은 파이썬 문법 for문과 if문 한 줄에 코딩하기에 대해서 알아보도록 하겠다.

 

 

파이썬 컴프리헨션 문법

 

 

1. for문을 한 줄에 작성해보자.

먼저 for문을 한 줄에 써보도록 하자. 특정 list에 값을 2배로 한다면, 우리는 이렇게 작성해 볼 수 있다.

temp = list([2, 3, 4, 5])
temp_new = list()
for i in temp:
    temp_new.append(i*2)

print(temp_new)


Out> [4, 6, 8, 10]

 

 

하지만 아래와 같이 한 줄에 코딩할 수도 있다.

temp_new = list([ i*2 for i in temp ])

 

 

temp는 동일하게 입력한 상태에서 for문을 한 줄로 작성하였다.

처음에는 이해하기는 어렵지만, 순서대로 작성한다고 생각하면 어렵지 않다. 예를 들어 'i에 2를 곱해서 리스트를 만드는데, 그 i는 for문으로 temp에서 가져와' 이런 식으로 말이다. 처음에는 사용하기 어렵지만 익숙해지만, 타이핑도 줄고 코드도 간결해진다.

동일하게 numpy의 array에서 사용할 수 있다.

import numpy as np

np.array([i*2 for i in temp])

 

 

2. if문을 추가하여 한 줄에 작성해보자.

여기에 if문도 추가가 가능하다. 위의 temp리스트에서 3보다 큰 경우에는 2를 곱하고, 3보다 작은 경우에는 그냥 list에 넣는다고 가정해보자. 아래와 같이 작성이 가능하다.

temp = list([2,3,4,5])
temp_new = list()

for i in temp:
    if i>3:
        temp_new.append(i*2)
    else:
        temp_new.append(i)

 

 

이러한 구문도 아래와 같이 한 줄에 작성이 가능하다.

list( [ i * 2  if  i>3 else i for i in temp ] )

 

 

위의 구문도 순서대로 해석이 가능하다. 'i에 2를 곱해서 리스틀 만들건데, 3보다 크면 하고 아니면 그대로 넣어. i는 for문으로 temp에서 가져와'. 필자는 해석이 좀 어색했지만, 영어의 어순 같기도 하다. 먼저 말하고 뒤에 부연설명이 붙는 순서로 읽으면 이해하기 편하다.

 

 

else를 제외하면 좀 이상해지는데, 이 때는 if를 뒤에 넣어야 한다.

list( [ i for i in temp if i > 3 ])

 

위와 같이 else가 없을 때는 if를 뒤에 써야 한다. 이 때는 순서대로 해석이 어려운 듯 하다.

동일하게 numpy의 array에서도 사용이 가능하다.

 

 

오늘은 이렇게 파이썬 문법 for문과 if문 한 줄에 쓰기에 대해서 알아보았다. 처음에는 사용하기 어색하다. 하지만 계속 사용하다보면 코딩수가 줄어 코드도 깔끔해지고, 해석도 생각보다 용이하다. 특히 데이터 분석 코드에서 많이 사용하는 것 같으니 익숙해지면 좋을 듯 하다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">