는 파이썬 투명지에 세도막 조건부 작동자?

파이썬 조건 없는 경우, 다른 언어를 사용하여 구문 한 시대에 연산자입니다 시뮬레이션하도록 가능할까요?

질문에 대한 의견 (7)
해결책

네, 그것은 [추가] [1] 에서 버전 2.5. 표현식에서는 구문은 다음과 같습니다.

a if condition else b

첫 번째 '조건' 중 'a' 또는 'b' 검사됩니다 정확히 한 후 반환함 검사됩니다 [부울입니다] [4] 가치를 기반으로 하는 '조건'. 만약 '조건' 로 평가되는 'True', 'a', 'b' 는 무시됨 검사됩니다 반환함 하지만 그 때 'b' 또는 'a' 가 아니라 다른 반환함 검사됩니다 무시됨.

이렇게 하면 '조건' 만 'a' 검사됩니다 누전으로 이유는열 것은 전혀 아니다 '는' 와 'b' 평가하실 있지만 이 경우 'b' 와 'a' 만 찼음을 거짓값 검사됩니다 평가하실 전혀 없습니다.

예를 들면 다음과 같습니다.

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

참고로 조건문 () 는 expression statement 아닙니다. 즉, '또는' 전달하십시오 can& t # 39, 또는 기타 조건 내에서 사용하는 할당에서는 명령문입니다 제표를 표현식에서는 :

>>> pass if False else x = 3
  File "", line 1
    pass if False else x = 3
          ^
SyntaxError: invalid syntax

그러나 조건식의 할당하십시오 같은 변수를 사용할 수 있습니다.

x = a if True else b

조건식 스위칭할 것 같은 두 개의 값. # 39, & # 39 하고 있는 것은 매우 유용한 you& 때, 한 개의 값이거나 another& # 39. 하지만 상황이 doesn& # 39, 다른 많은 것을 하지 않는다.

"만약 사용해야 할 경우 정상적인 명령문입니다 사용해야 합니다 표현식에서는 기술서임을 대신 '조건부.

39 의 일부 피토니스타스 빛위에 it& 점에 유의하십시오 줄기세포 의해 여러 가지 이유로.

  • The order of the 인수만 찼음을 클래식 '의 것들과는 다르다? a: b '삼항 연산자를 기타 다양한 언어 (예를 들어, C, C++, 자바, 자바스크립트, 펄, 루비, 이동 등) 로 이어질 수 있는 버그 # 39 에 익숙하지 않은 사용자를 때 Python& &quot surprising"; 이를 사용할 수 있다 (반전합니다 주문하십시오 수 있을 것이다).
  • 일부 찾아 &quot, 때문에 오히려 정상적인 흐름을 댁이라면 unwieldy&quot, 생각 (사고 다음 두 조건 중 첫 번째 효과).
  • 스타일 시작했다. (비록 & # 39, & # 39, 인라인 "만약 ' 수 상행담관염이라고 스크립트는 간단한 정말 유익한 저회가 코드에서 더 어렵게 않습니다)

39 순서를 기억하는 데 문제가 있다는 사실을 주지하십시오 you& 경우, re (거의) 라고 소리내어 읽을 때, 당신은 관심용 너희는너희가 짓궂군요. 예를 들어, 'b &gt 경우, x = 4 'x' 가 될 경우 b 는 다른 8 9 소리내어 읽을 등 8 개 이상의 그렇지 않으면 4 9 '.

공식 문서:

  • [조건식의] [2]
  • [C 의 avamer 있어요? ":" 삼항 연산자를?] [3]

[1]: [파이썬 개발] 조건식 resolution&quot https://mail.python.org/pipermail/python-dev/2005-september/056846.html "; [2]: https://docs.python.org/3/reference/expressions.html # 조건식의 &quot 조건부 expressions"; [3]: https://docs.python.org/3.3/faq/programming.html # c 의 삼항 연산자를 avamer 있어요 &quot, c 의 avamer 있어요? ":" 삼항 연산자를 &quot,? [4]: https://en.wikipedia.org/wiki/Boolean_data_type &quot 부울입니다 데이터 type";

해설 (10)

튜플 붙여넣습니다 인덱스화할 수 있습니다.

(falseValue, trueValue)[test]

'test' 요구사항뿐 반환되기를 True 또는 False. 항상 안전한 정보기술 (it) 을 구현할 수 있습니다.

(falseValue, trueValue)[test == True]

또는 내장현 사용할 수 있습니다. ['부울 ()'] [2] [부울입니다] [1] 가치를 제공하기 위해.

(falseValue, trueValue)[bool()]

[1]: https://en.wikipedia.org/wiki/Boolean_data_type &quot 부울입니다 데이터 type"; [2]: https://docs.python.org/3.3/library/functions.html # 부울 &quot bool";

해설 (10)

S # 39, 2.5, 이전 버전의 there& 의심하게 된다.

[expression] and [on_true] or [on_false]

이 때 '' on_true 잘못된 결과를 얻을 수 있습니다 ,) 는 거짓값 부울입니다 value.&lt sup&gt 1&lt /sup&gt. 이점이 있지만, 이는 더 표현식에서는 왼쪽에서 오른쪽으로 평가 없는 내 목소리를 높였다.

sub&gt <; 1. [C 의 avamer 있어요? ":" 삼항 연산자를?] [1] &lt /sub>;

[1]: http://docs.python.org/3.3/faq/programming.html # c 의 삼항 연산자를 avamer 있어요

해설 (4)

&lt code>; lt;;;;;;; gt 1&amp &lt i&gt &amp 표현식에서는 &lt /i&gt. &lt b&gt if&lt /b>;;; lt;;;;;; gt, &lt /i&gt condition&amp &amp i&gt &lt. &lt b&gt else&lt /b>;;; lt;;;;;;; gt 2&amp &lt i&gt &amp 표현식에서는 &lt /i&gt. &lt /code>;

"'파이썬 a = 1 b = 2

&gt 경우 1. 다른 b - 1

출력이 - 1

&gt 경우 1. b 는 다른 &lt 경우 - 1. 그렇지 않으면 0 b

출력이 - 1

"'

해설 (2)

From [문서]:

&gt. 조건식의 (라고도 "삼항 연산자를") 가 가장 낮은 우선 모든 파이썬 운영체. &gt. &gt. 'X, y' 는 다른 조건이 먼저 표현식에서는 경우 C C ( x 아니다). 만약 C x 검사됩니다 것은, 그 값은 반환되었습니다. 그렇지 않으면 그 값은 보답받는단다 검사됩니다 y-축 , &gt. &gt. 지켜보리니 대한 자세한 내용은 [PEP 308] 조건식의.

이후 새로운 버전 2.5.

[문서]: https://docs.python.org/3/reference/expressions.html # 조건식의 &quot 조건부 expressions"; [PEP 308]: https://www.python.org/dev/peps/pep-0308/ &quot 조건부 Expressions&quot PEP 308 -;;

해설 (0)

조건부 표현식에 대한 일환으로 2006년 에서 추가된 연산자에서 파이썬 (python 향상으로서 제안을 308] 1. # 39 의 운영자 및 it& '다른' 자신의 형태를 공통에서?::

 if  else 

것과 같습니다.

if :  else: 

예를 들어보겠습니다.

result = x if a > b else y

사용할 수 있는 다른 구문 (호환됩니까 전에 버전 2.5):

result = (lambda:y, lambda:x)[a > b]()

여기서 피연산자로 있다 게으름을 평가하실.

다른 방법은 색인화하기 의해 튜플 (isn& 있는 대부분의 다른 언어에 부합하는 조건부 연산자입니다 # 39, t):

result = (y, x)[a > b]

사전 또는 명시적으로 건설되었다.

result = {True: x, False: y}[a > b]

간단해진다는 방법을 사용할 수 있지만, 다른 (비안정적) '와' 와 '또는' 연산자:

result = (a > b) and x or y

그러나 이 경우 '거짓', 'x' 약간만이라도 won& # 39 빗나갔다.

해결 방법은 튜플을 할 수 있는 'y' 또는 'x' 를 다음과 같이 나열합니다.

result = ((a > b) and [x] or [y])[0]

또는:

result = ((a > b) and (x,) or (y,))[0]

39, re you& 경우 사전, 작업 조건, 시대에 사용하는 대신 활용할 수 있습니다. ['프레젠테이션이든 (key, 기본)'] [3], 예를 들면 다음과 같습니다.

shell = os.environ.get('SHELL', "/bin/sh")

&lt, sup&gt, 출처: [?: python 에서 http://support. 위키백과] [4] &lt /sup>;

[3]: https://docs.python.org/3/library/stdtypes.html # 딕트리제 [4]: # 파이썬 https://en.wikipedia.org/wiki/% 3F:

해설 (1)

죄송합니다.

(falseValue, trueValue)[test]

39, 단락 doesn& 솔루션이므로 없는 있다. 이에 따라 '조건' 이 '와' 트루발루 상관없이 모두 가짜발루 평가하실. 이 오류는 최적화, 심지어 갈레라 컴퍼니 (즉, '트루발루 부작용이 있을 수 있고,' 모두 '와' 가짜발루 메서드을).

이 하나의 솔루션으로 약간만이라도

(lambda: falseValue, lambda: trueValue)[test]()

실행 (우승자가 늦춰질 것으로 잘 알려져 있다.)) 는 일치하지 않지만, 호출 및 비사양 호출 객체에는. 또, t pardiso 경우 doesn& # 39 를 사용하여 다음과 같이 정의한다.

그래서 이야기 중에서 선택 사이의 상관 관계를 갖는 것은 댁이라면 - solutions 를 사용하여 3 단락 피쳐에는 적어도 з리통 2.5 (이럴 문제가 아니라 더 이상) 과 ',' 위험이 없는 &quot 트루발루 -evaluates-to-false&quot. 오류가 발생했습니다.

해설 (1)
  • 삼항 연산자를 다른 프로그래밍 언어 *

여기에 몇 가지 중요한 차이가 삼항 연산자를 그냥 표시하십시오 시도하시겠습니까 '간' 몇 가지 프로그래밍 언어.

삼항 연산자를 &gt Javascript 에서 ,

var a = true ? 1 : 0;
# 1
var b = false ? 1 : 0;
# 0

, 삼항 연산자를 &gt 에서 루비

a = true ? 1 : 0
# 1
b = false ? 1 : 0
# 0

, 삼항 연산자를 &gt 에 스칼라

val a = true ? 1 | 0
# 1
val b = false ? 1 | 0
# 0

, 삼항 연산자를 &gt 에서 R 프로그래밍


a 
해설 (4)

파이썬 2.5 와 신형 위한 특수 구문이 있습니다.

[on_true] if [cond] else [on_false]

하지만, s # 39 는 그 이전 시대에 비단뱀 작동자 구현되지 않은 it& 시뮬레이션하도록 가능한 것이 특징이다.

cond and on_true or on_false

하지만, 이는 '조건' 로 평가되는 경우 문제가 발생할 가능성이 있습니다 'True' 와 '로 평가되는' '다음' 대신 '반환됨 on_false on_true' 거짓 'on_true'. 이 방식은 이 비헤이비어를 스케쳐내 확인, 그렇지 않으면 이:

{True: on_true, False: on_false}[cond is True] # is True, not == True

랩된 수 있는 사람:

def q(cond, on_true, on_false)
    return {True: on_true, False: on_false}[cond is True]

이렇게 사용됩니다.

q(cond, on_true, on_false)

모든 것이 호환됩니까 윈도 버전.

[1]: http://docs.python.org/faq/programming.html # c 의 삼항 연산자를 avamer 있어요

해설 (4)

종종 찾을 수 있습니다.

cond and on_true or on_false

이 때 문제가 생길 수 있지만 on_true = 0

>>> x = 0
>>> print x == 0 and 0 or 1 
1
>>> x = 1
>>> print x == 0 and 0 or 1 
1

이 결과를 기대할 수 있는 일반 삼항 연산자를 위한 것이다

>>> x = 0
>>> print 0 if x == 0 else 1 
0
>>> x = 1
>>> print 0 if x == 0 else 1 
1
해설 (0)

&gt. # 는 파이썬 투명지에 세도막 조건부 작동자?

예. 의 문법 파일:

test: or_test ['if' or_test 'else' test] | lambdef

이 부분도 큰 관심을 보이고 있다.

or_test ['if' or_test 'else' test]

그래서 조건부 작업은 세도막 형식의:

expression1 if expression2 else expression3

'을' expression3 게으름을 평가하실 (즉, '거짓' expression2 있는 경우에만 평가하실 부울입니다 컨텍스트로). 그로 인해 재귀적 정의마다 소재 (나쁜 것으로 보이지만 스타일입니까.), 그들을 체인 수 있습니다.

expression1 if expression2 else expression3 if expression4 else expression5 # and so on

적어두십시오 사용.

단, 모든 "만약 '' 다른 '에 따라야 합니다. 이 어려운 교훈을 배우는 사람들이 목록 및 지능형 발생기입니다 표현식에서는 찾을 수 있다 - 3 에 대한 자세한 내용은 다음 작동하지 않습니다, 파이썬 표현식에서는 다른 것으로 기대하고 있다.

[expression1 if expression2 for element in iterable]
#                          ^-- need an else here

제기되고 있는 'a' SyntaxError: 잘못된 문법 '. 그래서 위의 불완전한 블렌드합니다 인컨텍스트 논리 (아마도 사용자가 있는 거짓값 찼음을 op 없습니다. 있을 것으로 기대하고 있다) 에서 사용할 수 있는, 아니 고안되었습니다 expression2 필터로 - 참고 있는 다음 합법적인 파이썬.

[expression1 for element in iterable if expression2]

'로 표현할 수 있으며, , 목록에 대해 필터할 expression2' 는 한 시대에 조건 없는 모습이다.

교체품 구문 보다 좁힙니다 사례:

이 같은 다소 고통스런 기록하십시오 알 수 있습니다.

expression1 if expression1 else expression2

위의 두 번 '와' expression1 평가하실 할 것이다 "라고 발언했다. 이 경우 로컬 변수 앨리어스가 중복용으로 제한할 수 있습니다. 그러나 일반적인 강력한 '또는' & # 39 의 파이썬 관용구 엔드입니다 활용 를 사용하는 것이 바로 가기를 비헤이비어를:

expression1 or expression2

시맨틱스를 있는 것과 같습니다. 일부 스타일 안내선 명확한 설명을 근거로 이 사용을 제한할 수 있습니다 - 않니다 팩과도 거의 마무리라뇨 agent. 많은 구문.

해설 (4)

파이썬 시뮬레이트하기 삼항 연산자를.

예를 들어

a, b, x, y = 1, 2, 'a greather than b', 'b greater than a'
result = (lambda:y, lambda:x)[a > b]()

출력:

'b greater than a'
해설 (2)

이 작업을 수행할 수 있습니다. -

' [찼음을] 및 [expression_1] 또는 [expression_2],'

예 -

'보기인쇄 (number% 2 와 &quot odd"; ', 또는 &quot even")

이는 &quot 인쇄하십시오 odd"; 이 번호는 홀수입니다 경우, 또는 &quot even&quot. 만약 그 수가 있다. _

결과 :- exp_1 실행될 경우 다른 조건이 true exp_2 실행됩니다.

  • 참고 :-*, False 로 평가하고, 0, 되니그들 왕티리스트 왕티스트링 거짓값. 0 을 제외한 모든 데이터를 true 로 평가된.

Here& # 39 의 작동 방식:

이 경우 조건 [조건] &quot True"; 그런 다음 expression_1 expression_2 평가하실 될 수는 없습니다. 만약 우리가 and&quot "; 함께 할 수 있는 파슬러 .So 는 항상 0 (영), 그 결과, 아래 기술서임을

0 and exp

39, exp won& 표현식에서는 &quot and&quot, 이후 전혀 평가될 수 없다. 항상 0 인 '제로' 로 평가하십시오 평가하십시오 표현식에서는 필요 없습니다. 컴파일러 자체가 모든 언어로, 작동됨 방법입니다.

에서

1 or exp

39, exp won& 표현식에서는 &quot or&quot, 이후 전혀 평가될 수 없다. 1 은 항상 1. # 39 평가할 수 있도록, 그 이후 될 수는 없는 노릇 won& 표현식에서는 exp 1 겁니다. (컴파일러 최적화 방법).

하지만) 의 경우,

True and exp1 or exp2

39 't be true 로 설정하고, 이후 두 번째 표현식에서는 won& exp2 평가하실 exp1 exp1 때 진정한' 약간만이라도 isn& # 39, t 거짓값.

만약

False and exp1 or exp2

39, t be False 가 exp1 표현식에서는 won& 평가하실 쓰는 일을 하고, 이후 0 과 &quot avamer and&quot. 하지만 그 이후, or&quot &quot exp1 약간만이라도 0 0 인 것이다. 이후, or&quot &quot exp2 표현식에서는 평가하십시오 사용할 예정이다. .

_

  • Note:-* 사용하여 이 같은 분기 &quot or"; 및 &quot and"; # 39 는 진실을 expression_1 doesn& 없는 경우에만 사용할 수 있습니다, False 값을 (& # 39 왕티리스트 없거나 또는 0 또는 [] 또는 왕티스트링. & # 39.) 이후 expression_1 될 경우, 그 존재 때문에, or&quot &quot 평가하실 expression_2 거짓값 됩니다. exp_1 간 및 exp_2.

  • 경우에 사용할 수 있도록 하려면 관계없이 모든 사례는 아직 exp_1 및 exp_2 거짓하였으니 값은 이렇게 :-*

' [찼음을] 및 [expression_2] ([expression_1] 또는 1) 또는.'

해설 (1)

세도막 조건부 작동자 앨리어스가 테스트 코드를 만들 수 있는 조건을 한 줄로 교체하십니까 multiline 다른 경우 컴팩트형.

문법:

&gt. 만약 [표현] [on_false] [on_true] 다른

1 - 간단한 방법을 사용하여 삼항 연산자를:

# Program to demonstrate conditional operator
a, b = 10, 20
# Copy value of a in min if a < b else copy b
min = a if a < b else b
print(min)  # Output: 10

2 - 튜플을 직접 사용하는 방식을, 사전, 람다.

# Python program to demonstrate ternary operator
a, b = 10, 20
# Use tuple for selecting an item
print( (b, a) [a < b] )
# Use Dictionary for selecting an item
print({True: a, False: b} [a < b])
# lamda is more efficient than above two methods
# because in lambda  we are assure that
# only one expression will be evaluated unlike in
# tuple and Dictionary
print((lambda: b, lambda: a)[a < b]()) # in output you should see three 10

3 - 삼항 연산자를 네스트된 다른 경우 기록할 수 있다.

# Python program to demonstrate nested ternary operator
a, b = 10, 20
print ("Both a and b are equal" if a == b else "a is greater than b"
        if a > b else "b is greater than a")

위 외곽진입 기록할 수 있다.

# Python program to demonstrate nested ternary operator
a, b = 10, 20
if a != b:
    if a > b:
        print("a is greater than b")
    else:
        print("b is greater than a")
else:
    print("Both a and b are equal") 
# Output: b is greater than a
해설 (1)

것보다 더 많은 곳에서 답을 (don&, 시간 t need to # 39 의 명백하네 반복하십시오 훈트러스) 이지만, 가끔 이런 오넬리너 짧은보기 이를 사용하여 구문.

if conditionX:
    print('yes')
else:
    print('nah')

됩니다.

print('yes') if conditionX else print('nah')

일부 (많은:) 이를 수 있지만, 개인적으로 빛위에 내색을 런피토니스 (짝수, 루비 쯤:), 즉 어떻게 찾을 때까지 좀 더 자연스러운 you& 익스플레스 일반적으로 좀 더 큰; d # 39 과 코드 블록을 시각적으로 끌고 갔다.

해설 (4)
a if condition else b

옛날에는 이 피라미드 데 문제가 있을 경우에는 그냥 기억.

     condition
  if           else
a                   b 
해설 (0)

많은 프로그래밍 언어에서 파생된 'C' 대개 다음 구문을 세도막 조건 연산자:

 ?  : 
          • Benevolen &gt 처음에는 파이썬 ',' Dictato Fo Lif (물론 내가 짓궂군요 귀도 반 로섬) 와 파이썬 비사양 스타일) 이 때문에 # 39 의 거역했으니하나님은 it& 이해할 수 없는 'c' 상당히 어려운 사람들을 위해 사용되는 언어이다. 또한 이미 많은 파이썬 '에서 사용하는' '대장암 예중이 :'. PEP ',' 파이썬 308* 승인되었음을 후 마침내 수신되었습니다 자체 짧은보기 조건식 (우리가 현재 사용):
 if  else 

그래서, 이 조건을 우선 평가합니다. 'True' 되돌려줍니다 될 경우, 그 결과, 그렇지 않으면 expression1 평가하실 전달자로써 expression2 적립율은 평가를 받았다. - 역학 하나만 표현식에서는 인해 Lazy Evaluation 실행됨을.

몇 가지 사례 (조건은 평가하실 왼쪽에서 오른쪽으로):

pressure = 10
print('High' if pressure < 20 else 'Critical')

# Result is 'High'

삼항 연산자를 연속으로 체인된 수 있습니다.

pressure = 5
print('Normal' if pressure < 10 else 'High' if pressure < 20 else 'Critical')

# Result is 'Normal'

다음 하나는 동일합니까 이전 1:

pressure = 5

if pressure < 20:
    if pressure < 10:
        print('Normal')
    else:
        print('High')
else:
    print('Critical')

# Result is 'Normal'

ᄋ "이번 도움이 됩니다.

해설 (0)

예, 파이썬 투명지에 삼항 연산자를 구문 및 예제 코드를 제시하십시오 슬라이드에서는 같은:)

#[On true] if [expression] else[On false]
# if the expression evaluates to true then it will pass On true otherwise On false

a= input("Enter the First Number ")
b= input("Enter the Second Number ")

print("A is Bigger") if a>b else print("B is Bigger")
해설 (5)

39 의 대안 중 하나를 Python& 조건식 은 다음과 같다.

{True:"yes", False:"no"}[boolean]

다음 좋은 디스크입니다. diskid 확장명은:

{True:"yes", False:"no", None:"maybe"}[boolean_or_none]

가장 짧은 바꾸는 있다.

("no", "yes")[boolean]

그러나 않으려면 모두 대한 대안이 없다 'yes no ()' 가 '와' () 는 다음과 같다.

yes() if [condition] else no()
해설 (0)

예, 시대에 따라 이미 사업자 파이썬 답변됨 있습니다.

 if  else 

추가 정보:

'&Lt 사용할 수 있습니다. "는 조건을 1&gt 표현식에서는 경우, 파선-짧은 시라키스 평가:

"'파이썬 a = True b = False

대신 이:

다른 경우 x = a b

파선-짧은 시라키스 평가 사용할 수 있습니다.

x = a 또는 b "' PS: 물론 많지만 이 시대에 삼항 연산자를 파선-짧은 시라키스 평가 아닙니다 충분히 약간만이라도 단락하지 이 경우에 사용됩니다.

해설 (1)