2010-06-22 8 views
67

C 및 기타 많은 언어에는 conditional (aka ternary) 연산자가 있습니다. 이렇게하면 조건의 진리에 따라 두 값 사이에서 매우 간결한 선택을 할 수 있습니다. 이는 조건을 포함하여 표현식을 매우 간결하게 만듭니다. 한 번 또는 두 번python? (조건부/삼항) 연산자

var = condition? something: something_else; 

: 그것은 것

if condition: 
    var = something 
else: 
    var = something_else 

C에서 반면 : 내 코드는 조건 파이썬에 네 줄을 할당 많이 있습니다 찾을 수 있기 때문에

나는이를 그리워 파일에서 괜찮습니다.하지만 조건부 할당이 많으면 행 수가 폭발하고 최악의 경우 눈이 그려집니다.

조건부 연산자의 간결함을 좋아합니다. 왜냐하면 코드를 생략 할 때 전략적이지 않은 것으로 간주하여 나를 산만하게하지 않기 때문입니다.

그래서 파이썬에는 조건부 연산자의 장점을 근사화하기 위해 단 한 줄로 할당하는 데 사용할 수있는 트릭이 있습니까?

답변

128

파이썬은 연산자가 있습니다 권장되지 않지만

variable = something if condition else something_else 

또는 (karadoc의 코멘트 @ 참조)

이전의 파이썬 코드에서
variable = (condition and something) or something_else 
+8

"variable = condition and something or something_else"는 작동하지 않습니다. 예를 들어 "True와 False : True"가 True를 반환하는 반면 "True and False : True"는 False를 반환합니다. – karadoc

+0

Something or Something_else가 올바르게 작동합니까? 예를 들어 무언가가 null이면 something_else로 설정하겠습니까? – Breedly

12

, 당신이 트릭을 볼 수 있습니다 :

condition and something or something_else 

그러나 이것은 매우 우월한로 대체되었습니다구문 :

something if condition else something_else 
+0

왜 "상관 없으면"돌아 오지 않는가? – Will

+4

@Will : "무엇이든 돌아 오지 않는다면"구문 상 올바른 Python이 아니기 때문에? –

+0

@Will 아마도 'else' 부분을 제공하지 않았기 때문일까요? – glglgl