Python 삼항 연산자를 사용하는 방법
게시 됨: 2023-01-04이 가이드는 Python에서 삼항 연산자를 사용하는 방법을 알려줍니다. 구문을 배우고 몇 가지 예를 코딩하여 작동 방식을 이해합니다.
if-else 조건문이 어떻게 작동하는지 검토한 다음 삼항 연산자를 사용하여 동등한 표현식을 작성하는 방법을 배웁니다.
다음으로 몇 가지 예제를 코딩한 다음 Python 튜플과 사전을 사용하여 Python 삼항 연산자의 동작을 에뮬레이트하는 방법을 배웁니다. 마지막으로 삼항 연산자 사용을 선호하는 몇 가지 사용 사례를 검토합니다.
의 시작하자!
Python의 If-Else 문: 리뷰
Python REPL을 시작하거나 Geekflare의 온라인 Python 편집기에서 코딩할 수 있습니다.
Python에서 if-else 문의 일반 구문은 다음과 같습니다.
if condition: # do this else: # do this
위 스니펫에서 condition
은 확인할 조건을 나타냅니다. 조건이 True
로 평가되면 if 블록이 트리거됩니다. 조건이 False
로 평가되면 else 블록 내부의 명령문이 실행됩니다.
다음은 energy
값이 0보다 작거나 같은지 여부에 따라 game_over
변수에 부울 값이 할당되는 예입니다.
-
energy <= 0
인 경우game_over
는True
입니다. - 그렇지 않으면
game_over
는 False입니다.
다음 코드 스니펫은 if-else 조건문을 사용하여 이를 수행하는 방법을 보여줍니다.
energy = -1 if energy <= 0: game_over = True else: game_over = False print(game_over) # True
이 예에서 energy
는 0보다 작은 -1입니다. 따라서 game_over
는 True입니다.
Python 삼항 연산자: 구문 및 예제
Python에는 C 및 C++와 같은 언어의 삼항 조건 연산자와 매우 유사하게 작동하는 삼항 연산자가 있습니다. 이를 사용하는 일반적인 구문은 다음과 같습니다.
expression1 if condition else expression2
위 구문을 구문 분석해 보겠습니다.
-
condition
: 확인할 조건입니다. -
expression1
: 조건이 True인지 평가할 표현식입니다. -
expression2
: 조건이 False인지 평가할 표현식입니다.
이제 코드의 if-else 버전에서 어떤 expression1
, expression2
및 condition
이 있어야 하는지 식별합니다.
모두 합치면 Python의 삼항 연산자를 사용하여 다음을 얻을 수 있습니다.
game_over = True if energy <= 0 else False print(game_over) # True
다른 예를 코딩해 봅시다. 당신이 서점을 운영하고 있고 독자들이 지난 1년 동안 당신의 서점을 얼마나 자주 방문했는지에 따라 독자들에게 구매 시 할인을 제공한다고 가정해 보십시오.
numVisits
는 방문 횟수를 나타냅니다.
-
numVisits > 7
인 경우 할인율,discount_perc
는 20입니다. - 그렇지 않으면
discount_perc
는 5입니다.
삼항 연산자를 사용하여 discount_perc
변수에 값을 할당합니다.
numVisits = 10 discount_perc = 20 if numVisits > 7 else 5 print(discount_perc) # 20 (as numVisits = 10 which is > 7)
다음으로 Python 튜플과 사전을 사용하여 삼항 연산자를 에뮬레이트하는 방법을 배웁니다.
Python Tuple로 삼항 연산자 에뮬레이션
파이썬의 모든 이터러블과 마찬가지로 튜플은 제로 인덱싱을 따릅니다. 따라서 튜플에 두 개의 요소가 있는 경우 tuple_name[0]
은 튜플의 첫 번째 요소를 나타내고 tuple_name[1]
은 튜플의 두 번째 요소를 제공합니다.
Python의 기본 데이터 유형은 정수, 부동 소수점, 문자열 및 부울입니다. Python은 다른 데이터 유형의 해당 표현으로 특정 데이터 유형을 나타낼 수 있는 유형 캐스팅을 지원합니다.
Python REPL을 시작하고 다음 예제를 실행합니다. 정수를 부울로 변환하려고 하면 다음을 알 수 있습니다.
-
bool(0)
은False
입니다. -
bool(<any non-zero integer>)
는True
를 반환합니다.
>>> bool(0) False >>> bool(1) True >>> bool(-1) True >>> bool(10) True
마찬가지로 부울을 정수로 캐스팅할 때 다음과 같은 결과가 나타납니다.
>>> int(True) 1 >>> int(False) 0
타입 캐스팅과 인덱싱을 함께 사용하면 다음과 같이 할 수 있습니다.
- 튜플의 인덱스 0에 있는 요소:
condition
이False
일 때 사용할 값입니다. - 튜플의 인덱스 1에 있는 요소:
condition
이True
일 때 사용할 값입니다.
위의 내용을 사용하면 다음이 있습니다.
>>> numVisits = 10 >>> discount_perc = (5,20)[numVisits > 7] >>> discount_perc # 20
여기서 numVisits > 7
조건은 numVisits
가 10이므로 True
입니다. int(True)
가 1이므로 discount_perc
의 값은 인덱스 1의 요소인 20입니다.
Python 사전으로 삼항 연산자 에뮬레이션
True
및 False
를 사전의 키로 설정할 수 있습니다. 그리고 각각 True
및 False
키에 해당하는 값으로 expression1
및 expression2
를 설정할 수 있습니다.
some_dict = {True: expression1, False: expression2 }
다음에 무엇을 합니까? 이제 some_dict[condition]
을 사용하면 condition
이 True
인 경우 True
키에 해당하는 expression1
이 평가됩니다. condition
이 False
일 때 expression2
가 평가됩니다.
discount_perc
예제를 (다시) 코딩하지만 이번에는 Python 사전을 사용합니다.
>>> numVisits = 10 >>> discount_dict = {True: 20, False:5} >>> discount_perc = discount_dict[numVisits > 7] >>> discount_perc # 20
여기서 numVisits = 10
은 7보다 큽니다. 따라서 조건 numVisits > 7
은 True
입니다. 따라서 discount_dict[numVisits > 7]
은 값이 20인 discount_dict[True]
로 평가됩니다.
항상 Python 삼항 연산자를 사용해야 합니까?
지금까지 삼항 연산자를 사용하는 방법을 배웠습니다. 하지만 항상 삼항 연산자를 사용해야 할까요? 음, 삼항 연산자는 모든 사용 사례에 대해 최선의 선택이 아닐 수 있습니다. 이 섹션은 if-else 문보다 삼항 연산자를 사용하는 것이 더 좋을 때 세분화됩니다. 또한 삼항 연산자 대신 if-else 문을 사용하는 것을 고려해야 하는 경우도 다룰 것입니다.
If-Else 블록보다 간결함
언급했듯이 Python에서 삼항 연산자 표현식은 if-else 문보다 더 간결합니다. 따라서 이를 사용하여 조건을 확인하고 즉석에서 조건부로 표현식을 평가할 수 있습니다.
다음 예에서 nums
는 임의로 생성된 100개의 정수 목록입니다. 100개의 숫자 각각에 대해 홀수인지 짝수인지 확인합니다. 그리고 이 평가는 f-string 내부에서 인라인으로 발생합니다.
import random nums = [random.choice(range(100)) for i in range(10)] for num in nums: print(f"{num} is {'even' if num%2==0 else 'odd'}")
# sample output 0 is even 56 is even 6 is even 53 is odd 62 is even 7 is odd 8 is even 77 is odd 41 is odd 94 is even
삼항 연산자에는 Else 절이 필요합니다.
if-else 조건문을 사용하는 경우 else 절은 선택 사항입니다. 예를 들어 보겠습니다. energy
가 0보다 작거나 같은 값으로 떨어지면 game_over
변수는 True
로 설정됩니다.
그러나 energy
가 0보다 크면 game_over
변수가 초기화되지 않습니다. 따라서 game_over
변수에 액세스하려고 하면 오류가 발생합니다.
energy = 5 if energy <= 0: game_over = True print(f"Is the game over? {game_over}")
Traceback (most recent call last): File "ternary_op.py", line 39, in <module> print(f"Is the game over? {game_over}") NameError: name 'game_over' is not defined
이 문제를 해결하는 한 가지 방법은 처음에 game_over
를 False
로 설정하고 에너지 수준이 0보다 작거나 같으면 True
로 업데이트하는 것입니다.
energy = 5 game_over = False if energy <= 0: game_over1 = True print(f"Is the game over? {game_over}")
그러나 위와 동등한 Python 삼항 연산자를 사용할 때 else 절은 선택 사항이 아닙니다. 삼항 연산자는 condition
이 False
일 때 표현식을 평가해야 합니다.
game_over = True if energy <= 0 else False
else 부분을 제거하여 위의 내용을 game_over = True if energy <= 0
으로 변경하면 다음과 같이 구문 오류가 발생합니다.
File "ternary_op.py", line 42 game_over = True if energy <= 0 ^ SyntaxError: invalid syntax
여러 조건을 확인하려면 If-Else 문을 사용하십시오.
예를 고려하십시오. 코딩 인터뷰 질문 세트의 모든 질문에는 관련 난이도 점수가 있습니다. 이 점수에 따라 세 가지 난이도(쉬움, 중간 또는 어려움) 중 하나를 특정 질문에 할당합니다. 다음이 있다고 가정합니다.
점수 | 난이도 |
10 미만 | 쉬운 |
10~20 사이 | 중간 |
20보다 큼 | 딱딱한 |
난이도 점수가 주어지면 다음과 같이 Python 삼항 연산자를 사용하여 난이도를 얻을 수 있습니다.
score = 12 difficulty_level = "easy" if score < 10 else "hard" if score > 20 else "medium" print(difficulty_level) # medium
위 코드 블록의 삼항 연산자 표현식은 다음과 같은 형식입니다.
expression1 if condition1 else expression2 if condition2 else expression3
간결하지만 읽고 파싱하기가 약간 어렵습니다. 다음 이미지는 이 경우 제어 흐름이 어떻게 발생하는지 보여줍니다.
다음 코드 스니펫은 if-else 문을 사용하여 동등한 구현을 보여줍니다. 보시다시피 제어 흐름이 훨씬 이해하기 쉽고 코드가 더 읽기 쉽습니다.
if score < 10: difficulty_level="easy" elif score > 20: difficulty_level="hard" else: difficulty_level="medium" print(difficulty_level)
따라서 조건이 여러 개인 경우 삼항 연산자 대신 if-else 블록을 사용해야 합니다. 이렇게 하면 코드를 쉽게 읽고 이해할 수 있습니다.
또한 조건이 참인지 거짓인지에 따라 여러 문을 실행해야 하는 경우 if-else 문 사용을 고려해야 합니다.
결론
다음은 이 자습서에서 배운 내용을 요약한 것입니다.
- Python에서 삼항 연산자는 다음 구문과 함께 사용할 수 있습니다:
expression1 if condition else expression2
. - Python 튜플 및 사전을 사용하여 삼항 연산자의 동작을 에뮬레이트할 수 있습니다.
- 삼항 연산자는 if-else 블록에 대한 보다 간결한 대안이 될 수 있지만 코드를 읽을 수 있는지 확인해야 합니다. 코드의 가독성을 높이려면 특히 여러 조건을 연결해야 하는 경우 삼항 연산자 대신 if-else 문을 사용할 수 있습니다.
다음으로 Python의 같음 및 같지 않음 연산자에 대한 자습서를 확인하는 방법을 배웁니다.