don't stop believing

if condition 한 줄로 쓰기 (one-liner) 본문

Python/Basic

if condition 한 줄로 쓰기 (one-liner)

Tongchun 2018. 12. 9. 14:02

Python에서 if-else 또는 if-elif-else 조건문(codition) 예전부터 한줄로 쓰고 싶었습니다.

python은 case문도 없을 뿐더러 간단한 if 조건문 때문에 여러줄로 늘어나는게 별로 보기좋아 보이지는 않았습니다. (개인의 취향)


그러다 몇 가지 방법이 있는 것을 확인했습니다.

우선 기본적인(전통적인) 방법입니다.

# traditional if-else

if x > 0:
	value = 10
else:
	value = 20


# one-liner
value = 10 if x > 0 else 20

위 방법은 value 변수에 값을 할당할 때 if문을 사용하는 방법입니다.


다음은 if-elis-else의 경우 입니다.

alpha가 7보다 클때 같을때 작을때의 조건문입니다.

# traditional if-elif-else

alpha = 10

if alpha > 7:
	beta = 999
elif alpha == 7:
	beta = 99
else:
	beta = 0


# one-liner
beta = 999 if alpha > 7 else (beta == 99 if alpha == 7 else 0)

하지만 if-elif-else 조건문일 경우 if 문을 이용한 변수 값 할당을 권장하지 않습니다. 

코드가 복잡해 질 수 있고 아래 처럼 alpha == 7 의 경우에는 beta 변수에 대한 True/False가 리턴되게 됩니다.


if-elif-else의 다른 방법으로는 dict를 사용하는 방법입니다.

# traditional if-elif-else

alpha = 7

if alpha > 7:
        beta = 999
elif alpha == 7:
        beta = 99
else:
        beta = 0


# one-liner
beta = {alpha > 7: 999, alpha < 7: 0}.get(True, 99)

alpha의 값이 크거나 작을때의 조건을 ditionary의 key 값으로 넣고 get으로 True일때의 값이 가져오게 합니다.

만약 key에 True에 해당하는 조건이 없다면 .get(True, 99)로 99가 오게 됩니다.



[참고]

https://medium.com/@epicshane/one-liner-for-python-if-elif-else-statements-d9d46016ba2a 



Comments