your programing

간단한 if-then-else 문을 한 줄에 넣기

lovepro 2020. 9. 29. 08:17
반응형

간단한 if-then-else 문을 한 줄에 넣기 [중복]


중복 가능성 :
Python 삼항 연산자

저는 방금 파이썬에 들어가고 있으며 구문의 간결함이 정말 마음에 듭니다. 그러나, 쓰기의 쉬운 방법이있다 if- then- else문은 한 줄에 맞도록은?

예를 들면 :

if count == N:
    count = 0
else:
    count = N + 1

이것을 작성하는 더 간단한 방법이 있습니까? 내 말은, Objective-C에서 나는 이것을 다음과 같이 쓸 것입니다.

count = count == N ? 0 : count + 1;

파이썬과 비슷한 것이 있습니까?

최신 정보

이 경우 count == (count + 1) % N.

일반적인 구문에 대해 묻습니다.


이것은 if-then보다 더 구체적으로 삼항 연산자 표현식입니다. 여기에 파이썬 구문이 있습니다.

value_when_true if condition else value_when_false

더 나은 예 : (Thanks Mr. Burns )

'Yes' if fruit == 'Apple' else 'No'

이제 할당 및 if 구문과 대조

fruit = 'Apple'
isApple = True if fruit == 'Apple' else False

vs

fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True

또한 "보통" if구문을 사용하여 콜론을 사용하여 한 줄로 통합 할 수 있습니다 .

if i > 3: print("We are done.")

또는

field_plural = None
if field_plural is not None: print("insert into testtable(plural) '{0}'".format(field_plural)) 

count = 0 if count == N else N+1

-삼항 연산자. 귀하의 솔루션이 이것보다 더 읽기 쉽다고 말하고 싶습니다.


일반 삼항 구문 :

value_true if <test> else value_false

다른 방법은 다음과 같습니다.

[value_false, value_true][<test>]

예 :

count = [0,N+1][count==N]

이것은 하나를 선택하기 전에 두 가지를 모두 평가합니다. 선택한 분기 만 평가하려면 :

[lambda: value_false, lambda: value_true][<test>]()

예 :

count = [lambda:0, lambda:N+1][count==N]()

<execute-test-successful-condition> if <test> else <execute-test-fail-condition>

코드 스 니펫을 사용하면

count = 0 if count == N else N + 1

참고 URL : https://stackoverflow.com/questions/2802726/putting-a-simple-if-then-else-statement-on-one-line

반응형