파이썬 조건 없는 경우, 다른 언어를 사용하여 구문 한 시대에 연산자입니다 시뮬레이션하도록 가능할까요?
네, 그것은 [추가] [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 "<stdin>", line 1
pass if False else x = 3
^
SyntaxError: invalid syntax
그러나 조건식의 할당하십시오 같은 변수를 사용할 수 있습니다.
x = a if True else b
조건식 스위칭할 것 같은 두 개의 값. # 39, & # 39 하고 있는 것은 매우 유용한 you& 때, 한 개의 값이거나 another& # 39. 하지만 상황이 doesn& # 39, 다른 많은 것을 하지 않는다.
"만약 사용해야 할 경우 정상적인 명령문입니다 사용해야 합니다 표현식에서는 기술서임을 대신 '조건부.
공식 문서:
[1]: [파이썬 개발] 조건식 resolution" https://mail.python.org/pipermail/python-dev/2005-september/056846.html "; [2]: https://docs.python.org/3/reference/expressions.html # 조건식의 " 조건부 expressions"; [3]: https://docs.python.org/3.3/faq/programming.html # c 의 삼항 연산자를 avamer 있어요 ", c 의 avamer 있어요? ":" 삼항 연산자를 ",? [4]: https://en.wikipedia.org/wiki/Boolean_data_type " 부울입니다 데이터 type";
튜플 붙여넣습니다 인덱스화할 수 있습니다.
(falseValue, trueValue)[test]
'test' 요구사항뿐 반환되기를 True 또는 False. 항상 안전한 정보기술 (it) 을 구현할 수 있습니다.
(falseValue, trueValue)[test == True]
또는 내장현 사용할 수 있습니다. ['부울 ()'] [2] [부울입니다] [1] 가치를 제공하기 위해.
(falseValue, trueValue)[bool(<expression>)]
[1]: https://en.wikipedia.org/wiki/Boolean_data_type " 부울입니다 데이터 type"; [2]: https://docs.python.org/3.3/library/functions.html # 부울 " bool";
S # 39, 2.5, 이전 버전의 there& 의심하게 된다.
[expression] and [on_true] or [on_false]
이 때 '' on_true 잘못된 결과를 얻을 수 있습니다 ,) 는 거짓값 부울입니다 value.< sup> 1< /sup>. 이점이 있지만, 이는 더 표현식에서는 왼쪽에서 오른쪽으로 평가 없는 내 목소리를 높였다.
sub> <; 1. [C 의 avamer 있어요? ":" 삼항 연산자를?] [1] < /sub>;
[1]: http://docs.python.org/3.3/faq/programming.html # c 의 삼항 연산자를 avamer 있어요
< code>; lt;;;;;;; gt 1& < i> & 표현식에서는 < /i>. < b> if< /b>;;; lt;;;;;; gt, < /i> condition& & i> <. < b> else< /b>;;; lt;;;;;;; gt 2& < i> & 표현식에서는 < /i>. < /code>;
"'파이썬 a = 1 b = 2
> 경우 1. 다른 b - 1
> 경우 1. b 는 다른 < 경우 - 1. 그렇지 않으면 0 b
"'
From [문서]:
>. 조건식의 (라고도 "삼항 연산자를") 가 가장 낮은 우선 모든 파이썬 운영체. >. >. 'X, y' 는 다른 조건이 먼저 표현식에서는 경우 C C ( x 아니다). 만약 C x 검사됩니다 것은, 그 값은 반환되었습니다. 그렇지 않으면 그 값은 보답받는단다 검사됩니다 y-축 , >. >. 지켜보리니 대한 자세한 내용은 [PEP 308] 조건식의.
이후 새로운 버전 2.5.
[문서]: https://docs.python.org/3/reference/expressions.html # 조건식의 " 조건부 expressions"; [PEP 308]: https://www.python.org/dev/peps/pep-0308/ " 조건부 Expressions" PEP 308 -;;
조건부 표현식에 대한 일환으로 2006년 에서 추가된 연산자에서 파이썬 (python 향상으로서 제안을 308] 1. # 39 의 운영자 및 it& '다른' 자신의 형태를 공통에서?::
<expression1> if <condition> else <expression2>
것과 같습니다.
if <condition>: <expression1> else: <expression2>
예를 들어보겠습니다.
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]
shell = os.environ.get('SHELL', "/bin/sh")
<, sup>, 출처: [?: python 에서 http://support. 위키백과] [4] < /sup>;
[3]: https://docs.python.org/3/library/stdtypes.html # 딕트리제 [4]: # 파이썬 https://en.wikipedia.org/wiki/% 3F:
죄송합니다.
(falseValue, trueValue)[test]
이 하나의 솔루션으로 약간만이라도
(lambda: falseValue, lambda: trueValue)[test]()
실행 (우승자가 늦춰질 것으로 잘 알려져 있다.)) 는 일치하지 않지만, 호출 및 비사양 호출 객체에는. 또, t pardiso 경우 doesn& # 39 를 사용하여 다음과 같이 정의한다.
그래서 이야기 중에서 선택 사이의 상관 관계를 갖는 것은 댁이라면 - solutions 를 사용하여 3 단락 피쳐에는 적어도 з리통 2.5 (이럴 문제가 아니라 더 이상) 과 ',' 위험이 없는 " 트루발루 -evaluates-to-false". 오류가 발생했습니다.
여기에 몇 가지 중요한 차이가 삼항 연산자를 그냥 표시하십시오 시도하시겠습니까 '간' 몇 가지 프로그래밍 언어.
삼항 연산자를 > Javascript 에서 ,
var a = true ? 1 : 0;
# 1
var b = false ? 1 : 0;
# 0
, 삼항 연산자를 > 에서 루비
a = true ? 1 : 0
# 1
b = false ? 1 : 0
# 0
, 삼항 연산자를 > 에 스칼라
val a = true ? 1 | 0
# 1
val b = false ? 1 | 0
# 0
, 삼항 연산자를 > 에서 R 프로그래밍
a <- if (TRUE) 1 else 0
# 1
b <- if (FALSE) 1 else 0
# 0
, > 삼항 연산자를 의 파이썬
a = 1 if True else 0
# 1
b = 1 if False else 0
# 0
파이썬 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 있어요
종종 찾을 수 있습니다.
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
>. # 는 파이썬 투명지에 세도막 조건부 작동자?
예. 의 문법 파일:
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. 많은 구문.
이 작업을 수행할 수 있습니다. -
예 -
이는 " 인쇄하십시오 odd"; 이 번호는 홀수입니다 경우, 또는 " even". 만약 그 수가 있다. _
이 경우 조건 [조건] " True"; 그런 다음 expression_1 expression_2 평가하실 될 수는 없습니다. 만약 우리가 and" "; 함께 할 수 있는 파슬러 .So 는 항상 0 (영), 그 결과, 아래 기술서임을
0 and exp
에서
1 or exp
하지만) 의 경우,
True and exp1 or exp2
만약
False and exp1 or exp2
_
Note:-* 사용하여 이 같은 분기 " or"; 및 " and"; # 39 는 진실을 expression_1 doesn& 없는 경우에만 사용할 수 있습니다, False 값을 (& # 39 왕티리스트 없거나 또는 0 또는 [] 또는 왕티스트링. & # 39.) 이후 expression_1 될 경우, 그 존재 때문에, or" " 평가하실 expression_2 거짓값 됩니다. exp_1 간 및 exp_2.
경우에 사용할 수 있도록 하려면 관계없이 모든 사례는 아직 exp_1 및 exp_2 거짓하였으니 값은 이렇게 :-*
세도막 조건부 작동자 앨리어스가 테스트 코드를 만들 수 있는 조건을 한 줄로 교체하십니까 multiline 다른 경우 컴팩트형.
>. 만약 [표현] [on_false] [on_true] 다른
# 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
# 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
# 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
것보다 더 많은 곳에서 답을 (don&, 시간 t need to # 39 의 명백하네 반복하십시오 훈트러스) 이지만, 가끔 이런 오넬리너 짧은보기 이를 사용하여 구문.
if conditionX:
print('yes')
else:
print('nah')
됩니다.
print('yes') if conditionX else print('nah')
일부 (많은:) 이를 수 있지만, 개인적으로 빛위에 내색을 런피토니스 (짝수, 루비 쯤:), 즉 어떻게 찾을 때까지 좀 더 자연스러운 you& 익스플레스 일반적으로 좀 더 큰; d # 39 과 코드 블록을 시각적으로 끌고 갔다.
많은 프로그래밍 언어에서 파생된 'C' 대개 다음 구문을 세도막 조건 연산자:
<condition> ? <expression1> : <expression2>
<expression1> if <condition> else <expression2>
그래서, 이 조건을 우선 평가합니다. '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'
ᄋ "이번 도움이 됩니다.
예, 파이썬 투명지에 삼항 연산자를 구문 및 예제 코드를 제시하십시오 슬라이드에서는 같은:)
#[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")
{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()
예, 시대에 따라 이미 사업자 파이썬 답변됨 있습니다.
<expression 1> if <condition> else <expression 2>
추가 정보:
'&Lt 사용할 수 있습니다. "는 조건을 1> 표현식에서는 경우, 파선-짧은 시라키스 평가:
"'파이썬 a = True b = False
다른 경우 x = a b
x = a 또는 b "' PS: 물론 많지만 이 시대에 삼항 연산자를 파선-짧은 시라키스 평가 아닙니다 충분히 약간만이라도 단락하지 이 경우에 사용됩니다.