파이썬 조건문 if문 한 줄에 작성하는 방법은?

2021. 8. 17. 07:38

코딩을 하면서 가장 많이 작성하는 문법 중의 하나는 if문이 아닌가 싶다. 하이브 SQL에서는 CASE~WHEN~ 구문을 이용했는데, 최근에 if문도 사용가능하다는 것을 알았다. if(조건문, 참값, 거짓값)의 형태로 엑셀과도 문법이 동일하다. CASE~WHEN~이 어색했는데, 앞으로는 if문을 많이 사용할 듯 하다. 그러고보니 파이썬의 if문이 작성하기 귀찮아졌다. 오늘은 파이썬 조건문 if문을 한 줄에 작성하는 방법에 대해서 알아보도록 하겠다.

 

파이썬 if문 한 줄에

 

 

파이썬에서 if문을 작성하는 방법은 아래와 같다.

a=0

if a==0:
    b=0
else:
    b=1

print(b)

[출력]
3

 

크게 불편한 건 아니지만, 엑셀이나 하이브SQL에서 작성하는 것보다 귀찮다. 하지만, 위 구문을 한 줄에 작성할 수 있는 방법이 있다. 아래와 같이 작성하면 된다.

b = 0 if a==0 else 1

 

구문이 어색할 수 있지만, 이렇게 생각하면 쉬울 듯 하다. b라는 변수에 0을 넣고 싶어. 그런데 a가 0이어야 돼. 아니면 1을 넣어.

print 함수를 적용할 때도 동일하게 사용할 수 있다.

a=1
print(0 if a==0 else 1)

 

중첩된 조건문을 사용하는 것도 가능하다. 하지만, 중첩해서 사용하는 것은 코드를 이해하기 어려운 것 같다.

a=2
print(0 if a==0 else (
    1 if a==2 else 3
))

 

그러고보니 리스트를 만들 때, for문과 if문을 사용해서 한 줄에 작성하는 문법이 있었는데 그 문법과 유사하다. 람다 함수를 이용하면, 데이터 프레임에서도 사용할 수 있다.

df=pd.DataFrame({"a":[0,1,2]}
print(df)

df["b"]=df["a"].apply(lambda x:0 if x==0 else 1)
print(df)

 

람다 함수에 대해서는 다음에 자세히 다뤄보도록 하겠다.

 

 

이렇게 파이썬에 또 한번 길들어지게 되었다. 그 동안 if문을 쓰기 귀찮았는데, 이제 조금은 편리하게 사용할 수 있을 듯 하다. 알아갈수록 편리하고 좋은 방법들이 많아 쉴 수가 없다.

댓글()