programing

한 줄 if-condition 할당

jooyons 2023. 6. 29. 20:04
반응형

한 줄 if-condition 할당

다음 코드를 가지고 있습니다.

num1 = 10
someBoolValue = True

값을 설정해야 합니다.num1로.20한다면someBoolValue이라True그리고 다른 것은 아무것도 하지 않습니다.그래서, 여기 그것에 대한 나의 코드가 있습니다.

num1 = 20 if someBoolValue else num1

제가 피할 수 있는 방법이 있을까요?...else num1더 깨끗해 보이게 하기 위한 부분?와 동등한 것

if someBoolValue:
    num1 = 20

로 교체해 보았습니다....else pass다음과 같이:num1=20 if someBoolValue else pass제가 받은 것은 구문 오류뿐입니다.또한 나는 그냥 생략할 수 없었습니다....else num1일부.

Python에서는 불가능하다고 생각합니다. 실제로 하려는 작업이 다음과 같은 작업으로 확장될 수 있기 때문입니다.

num1 = 20 if someBoolValue else num1

제외할 경우else num1할당이 실제로 무언가를 반환해야 한다고 확신하기 때문에 구문 오류가 발생할 것입니다.

다른 사람들이 이미 언급했듯이, 당신은 이것을 할 수 있지만, 그것은 나쁜 것입니다. 왜냐하면 당신은 아마도 다음 번에 코드를 읽을 때 자신을 혼란스럽게 만들 것이기 때문입니다.

if someBoolValue: num1=20

저는 그것을 별로 좋아하지 않습니다.num1 = someBoolValue and 20 or num1똑같은 이유로저는 실제로 그 선이 무엇을 하고 있는지 다시 한번 생각해봐야 합니다.

원하는 작업을 실제로 수행하는 가장 좋은 방법은 원본 버전입니다.

if someBoolValue:
    num1 = 20

이것이 가장 좋은 버전인 이유는 여러분이 무엇을 하고 싶은지 매우 분명하기 때문입니다. 여러분은 자신이나 다른 사람이 나중에 그 코드와 접촉할 것인지 헷갈리지 않을 것이기 때문입니다.

그리고 참고로.num1 = 20 if someBoolValueRuby가 약간 다르게 작동하므로 유효한 Ruby 코드입니다.

사용:

num1 = 20 if someBoolValue else num1

Google의 미래 시간 여행자를 위해 다음과 같은 새로운 방법이 있습니다(Python 3.8 이후부터 사용 가능).

b = 1
if a := b:
    # this section is only reached if b is not 0 or false.
    # Also, a is set to b
    print(a, b)

이것은 "바다표범"으로 알려져 있습니다.자세한 내용은 Python 3.8의 새로운 기능 페이지를 참조하십시오.

한 줄로:

if someBoolValue: num1 = 20

하지만 그러지 마세요.이 스타일은 일반적으로 예상되지 않습니다.사람들은 명확성과 일관성을 위해 긴 형태를 선호합니다.

if someBoolValue:
    num1 = 20

(이와 마찬가지로, 낙타 모자도 마찬가지입니다.그래서 차라리 사용하세요.some_bool_value.)

인라인 표현식은 다음과 같습니다. some_value if predicate무턱내지 않고else술어가 거짓이면 반환 값이 없기 때문에 부품이 존재하지 않습니다.그러나 식에는 모든 경우에 명확하게 정의된 반환 값이 있어야 합니다.이는 루비나 펄과 같은 용도와는 다릅니다.

다음 중 하나를 사용할 수 있습니다.

(falseVal, trueVal)[TEST]

TEST and trueVal or falseVal

한 줄 코드가 확실히 발생할 경우, 파이썬 3.8은 "바다표범 연산자"로 친숙하게 알려진 할당 표현을 도입합니다.

:=

someBoolValue and (num := 20)

20됩니다.num이 만첫번 부울식이째약▁the인 경우True할당은 괄호 안에 있어야 합니다. 그렇지 않으면 구문 오류가 발생합니다.

num = 10
someBoolValue = True

someBoolValue and (num := 20)
print(num) # 20

num = 10
someBoolValue = False

someBoolValue and (num := 20)
print(num) # 10

아니요, 당신은 뭔가를 바라고 있었던 것 같군요num1 = 20 if someBoolValue효과가 있겠지만, 그렇지 않습니다.제 생각에 가장 좋은 방법은if당신이 작성한 대로 진술:

if someBoolValue:
    num1 = 20
num1 = 10 + 10*(someBoolValue is True)

그게 제 새로운 최종 답변입니다.이전 답변은 다음과 같았고 언급된 문제에 대해 과잉 살상이었습니다.== 너무똑는중 ==not Good여기 선결문제가 있습니다...만약 당신이 한 가지를 추가하고 싶다면 여전히 좋습니다.True와 두 는 에대이러쿵는하저쿵러해▁for▁cond는▁and하.False:

num1 = 10 + (0,10)[someBoolValue is True]

말씀하신 대로num1이미 단독으로 두어야 할 값이 있습니다.나는 추측했습니다.num1 = 10그것이 게시물의 첫 번째 진술이기 때문에, 가기 위한 작업.20추가하는 것입니다.10.

num1 = 10
someBoolValue = True

num1 = 10 + (0,10)[someBoolValue is True]

print(f'num1 = {num1}\nsomeBoolValue = {someBoolValue}')

이 결과물을 생산했습니다.

num1 = 20
someBoolValue = True
num1 = 20 * someBoolValue or num1

일부 부울이 참일 경우 메서드를 호출하려면 다음을 수행할 수 있습니다.else None3차 시험을 종료합니다.

>>> a=1
>>> print(a) if a==1 else None
1
>>> print(a) if a==2 else None
>>> a=2
>>> print(a) if a==2 else None
2
>>> print(a) if a==1 else None
>>>

여기 제가 제안할 수 있는 것이 있습니다.다른 변수를 사용하여 if 절을 파생하고 num1에 할당합니다.

코드:

num2 =20 if someBoolValue else num1
num1=num2

원하는 경우 num1 = (일부 BoolValue인 경우 20, 그렇지 않은 경우 num1)을 사용할 수 있습니다.

방법 ㅠㅠㅠㅠㅠnum1 = (20*boolVar)+(num1*(not boolVar))

이런 식으로 하시면 됩니다.

try:
    a = [i for i in [20] if False][0]
except IndexError:
    print("Do what ever you want here")

당신은 이런 방법으로 당신의 문제를 해결할 수 있지만, 'try/except block'을 사용하는 것은 python에게 최선의 방법이 아닙니다.

언급URL : https://stackoverflow.com/questions/7872838/one-line-if-condition-assignment

반응형