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_overTrue 입니다.
  • 그렇지 않으면 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 삼항 연산자: 구문 및 예제

파이썬-삼항-연산자-1

Python에는 C 및 C++와 같은 언어의 삼항 조건 연산자와 매우 유사하게 작동하는 삼항 연산자가 있습니다. 이를 사용하는 일반적인 구문은 다음과 같습니다.

 expression1 if condition else expression2

위 구문을 구문 분석해 보겠습니다.

  • condition : 확인할 조건입니다.
  • expression1 : 조건이 True인지 평가할 표현식입니다.
  • expression2 : 조건이 False인지 평가할 표현식입니다.

이제 코드의 if-else 버전에서 어떤 expression1 , expression2condition 이 있어야 하는지 식별합니다.

삼항-op-ex1

모두 합치면 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에 있는 요소: conditionFalse 일 때 사용할 값입니다.
  • 튜플의 인덱스 1에 있는 요소: conditionTrue 일 때 사용할 값입니다.

위의 내용을 사용하면 다음이 있습니다.

 >>> numVisits = 10 >>> discount_perc = (5,20)[numVisits > 7] >>> discount_perc # 20

여기서 numVisits > 7 조건은 numVisits 가 10이므로 True 입니다. int(True) 가 1이므로 discount_perc 의 값은 인덱스 1의 요소인 20입니다.

Python 사전으로 삼항 연산자 에뮬레이션

TrueFalse 를 사전의 키로 설정할 수 있습니다. 그리고 각각 TrueFalse 키에 해당하는 값으로 expression1expression2 를 설정할 수 있습니다.

 some_dict = {True: expression1, False: expression2 }

다음에 무엇을 합니까? 이제 some_dict[condition] 을 사용하면 conditionTrue 인 경우 True 키에 해당하는 expression1 이 평가됩니다. conditionFalse 일 때 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 > 7True 입니다. 따라서 discount_dict[numVisits > 7] 은 값이 20인 discount_dict[True] 로 평가됩니다.

항상 Python 삼항 연산자를 사용해야 합니까?

항상 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_overFalse 로 설정하고 에너지 수준이 0보다 작거나 같으면 True 로 업데이트하는 것입니다.

 energy = 5 game_over = False if energy <= 0: game_over1 = True print(f"Is the game over? {game_over}")

그러나 위와 동등한 Python 삼항 연산자를 사용할 때 else 절은 선택 사항이 아닙니다. 삼항 연산자는 conditionFalse 일 때 표현식을 평가해야 합니다.

 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의 같음 및 같지 않음 연산자에 대한 자습서를 확인하는 방법을 배웁니다.