한 줄 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
'programing' 카테고리의 다른 글
| 해시 충돌 git (0) | 2023.06.29 |
|---|---|
| 스프링 포스트 방법 "필수 요청 본문이 누락되었습니다. (0) | 2023.06.29 |
| git 커밋 서명 실패: 비밀 키를 사용할 수 없습니다. (0) | 2023.06.29 |
| 세그멘테이션 결함 처리 (0) | 2023.06.29 |
| 공통 테이블 식, 세미콜론이 필요한 이유는 무엇입니까? (0) | 2023.06.29 |