2013-07-14 3 views
1

을 b`, 파이썬은이 두 Ternary Operators :파이썬 삼항 연산자 비교 :``if else else`` `시험과 또는 내가 아는 한

  1. 경우

  2. 테스트 및 A 또는 B

그것을 나 다른 시험 그들은 같은 목표를 달성하는 것으로 보이며, 둘 다 람다 함수에 사용될 수 있습니다.

>>> (lambda x: True if x > 0 else False)(5) 
True 
>>> (lambda x: True if x > 0 else False)(-5) 
False 

>>> (lambda x: x > 0 and True or False)(5) 
True 
>>> (lambda x: x > 0 and True or False)(-5) 
False 

질문

우리가 대신 다른 중 하나를 사용해야 어떤 경우가 있습니까?

+3

아니, '... 그리고 ... 나 ...'**하지 ** 삼항 연산자입니다. 그것은 * 2 * ** 2 진 ** 연산자입니다. –

답변

0

그들은 생산할 수있는 다른 결과 :

In [30]: (lambda x: x and 0 or 1)(True) 
Out[30]: 1 

In [31]: (lambda x: 0 if x else 1)(True) 
Out[31]: 0 
+0

감사합니다. @unutbu! 예, and-or 트릭은'a' ('test and a 또는 b')가 ** true ** 인 경우에만 작동합니다. ''else if test else'는 삼항 조건부 계산을 수행하는 데 훨씬 신뢰성 있고 깨끗한 방법 인 것 같습니다 :-) – Mingyu