Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 삼항 연산자 완벽 가이드: 한 줄 조건식 작성법과 다양한 활용 예제

많은 프로그래밍 언어는 조건 표현식(conditional expression)을 정의하는 삼항 연산자(ternary operator)를 지원합니다.

Python의 삼항 연산자 역시 이진 조건(binary condition)의 평가 결과에 따라 값을 반환하는 데 사용됩니다. 조건을 입력으로 받기 때문에 겉보기에는 "if-else" 조건문 블록과 비슷하지만, 결과값을 반환한다는 점에서 함수처럼 동작합니다.

기본 문법

[on_true] if [expression] else [on_false]

두 개의 정수를 비교하는 간단한 프로그램을 작성해 보겠습니다.

a. Python if-else 문 사용

>>> x, y = 5, 6
>>> if x>y:
   print("x")
else:
   print("y")
y

b. 삼항 연산자 사용

>>> x, y = 5, 6
>>> print("x" if x> y else "y")
y

삼항 연산자를 사용하면 코드를 단 한 줄로 작성할 수 있습니다. Python은 먼저 조건을 평가하고, 조건이 참(True)이면 첫 번째 표현식을, 거짓(False)이면 두 번째 표현식을 평가합니다.

>>> def find_max(a,b):
return a if (a>b) else b
>>> find_max(5, 6)
6

삼항 연산자를 구현하는 다양한 방법

Python에서는 삼항 연산자를 여러 가지 방식으로 구현할 수 있습니다.

a. Python 튜플(Tuple) 활용

>>> a, b = random(), random()
>>> (b, a) [a>b]
0.5497848117028667

위 코드는 아래 코드와 동일하게 동작합니다.

>>> (b, a) [True]
0.5065247098746795

반환된 값이 'a'인지 'b'인지 헷갈릴 수 있으므로, 위 코드를 다음과 같이 다시 작성하면 어떤 값이 선택되었는지 명확하게 확인할 수 있습니다.

>>> (f"b:{b}", f"a:{a}") [a>b]
'b:0.5497848117028667'

b. Python 딕셔너리(Dictionary) 활용

>>> a, b = random(), random()
>>> {False: f"b:{b}", True: f"a:{a}"}[a>b]
'a:0.8089581560973976'

키-값 쌍의 순서를 바꾸어 작성할 수도 있습니다.

>>> {True: f"a:{a}", False: f"b:{b}"}[a>b]
'a:0.8089581560973976'

c. 람다(Lambda) 함수 활용

Python 람다 함수를 삼항 연산자처럼 활용할 수도 있습니다.

>>> (lambda: f"a:{a}", lambda: f"b:{b}")[a>b]()
'b:0.6780078581465793'

중첩된 Python 삼항 연산자

삼항 연산자는 체인(chain) 형태로 연결하여 사용할 수도 있습니다.

>>> from random import random
>>> x = random()
>>> "Less than zero" if x<0 else "between 0 and 5" if a>=0 and a<=5 else "Greather than five"

실행 결과

'between 0 and 5'

x의 실제 값을 확인해 보겠습니다.

>>> x
0.08009251123993566

참고로, 삼항 연산자는 간단한 조건 분기를 한 줄로 처리할 때 유용하지만, 조건이 복잡해지거나 중첩이 깊어지면 오히려 가독성이 떨어질 수 있습니다. 로직이 단순한 경우에만 활용하고, 복잡한 분기 처리에는 일반적인 if-else 문을 사용하는 것이 좋습니다.