[PYTHON] 하나의 if-condition-assignment 행
PYTHON하나의 if-condition-assignment 행
다음 코드가 있습니다.
num1 = 10
someBoolValue = True
someBoolValue가 True이면 num1 값을 20으로 설정해야합니다. 그렇지 않으면 아무것도하지 않습니다. 그래서, 여기에 대한 나의 코드가있다.
num1 = 20 if someBoolValue else num1
거기에 어딘가에 내가 더 깨끗한 보이게 num1 부분을 피할 수 있습니까? 에 해당하는
if someBoolValue:
num1 = 20
나는 그것을 대체하려고 시도했다. 그렇지 않으면 someBoolValue else가 전달되면 num1 = 20과 같이 전달한다. 내가 가진 모든 구문 오류가 발생했습니다. 그저 ... num1 부분을 생략 할 수는 없습니다.
감사
해결법
-
==============================
1.파이썬에서는 이것이 가능하지 않다고 생각합니다. 실제로하려고하는 것은 아마도 다음과 같이 확장 될 것입니다.
파이썬에서는 이것이 가능하지 않다고 생각합니다. 실제로하려고하는 것은 아마도 다음과 같이 확장 될 것입니다.
num1 = 20 if someBoolValue else num1
else num1을 제외하면 과제가 실제로 무언가를 반환해야한다는 확신 때문에 구문 오류가 발생합니다.
다른 사람들이 이미 언급했듯이 다음과 같이 할 수는 있지만 다음 번에 코드 조각을 읽을 때 혼란 스러울 것입니다.
if someBoolValue: num1=20
나는 똑같은 이유로 num1 = someBoolValue와 20 또는 num1을 좋아하지 않습니다. 나는 실제로 그 라인이하고있는 것에 대해 두 번 생각해야한다.
원하는 것을 실제로 달성하는 가장 좋은 방법은 원래 버전입니다.
if someBoolValue: num1 = 20
그게 가장 좋은 이유는 당신이하고 싶은 일이 아주 분명하고 자신을 혼란스럽게하지 않거나 다른 사람이 그 코드와 나중에 접촉하게 될 것이기 때문입니다.
또한, 보조 노트로 someBoolValue가 유효한 Ruby 코드 인 경우 num1 = 20이됩니다. Ruby가 조금 다르게 작동하기 때문입니다.
-
==============================
2.이것을 사용하십시오 :
이것을 사용하십시오 :
num1 = 20 if someBoolValue else num1
-
==============================
3.한 줄에 :
한 줄에 :
if someBoolValue: num1 = 20
그러나 그렇게하지 마십시오. 이 스타일은 일반적으로 예상되지 않습니다. 사람들은 명확성과 일관성을 위해 더 긴 형식을 선호합니다.
if someBoolValue: num1 = 20
(낙타 캡은 피해야합니다. 따라서 some_bool_value를 사용하십시오.)
술어가 거 ~ 인 경우 리턴 값이 없으 G로 else 파트가없는 술어가 존재하지 않으면 인라인 표현식 some_value에 유의하십시오. 그러나 표현식에는 모든 경우에 명확하게 정의 된 반환 값이 있어야합니다. 이것은 Ruby 나 Perl처럼 사용법과 다릅니다.
-
==============================
4.다음 중 하나를 사용할 수 있습니다.
다음 중 하나를 사용할 수 있습니다.
(falseVal, trueVal)[TEST] TEST and trueVal or falseVal
-
==============================
5.아니, someBoolValue가 작동하면 num1 = 20과 같은 것을 기대하고 있었지만 그렇지 않습니다. 가장 좋은 방법은 if 문을 작성한 것과 같습니다.
아니, someBoolValue가 작동하면 num1 = 20과 같은 것을 기대하고 있었지만 그렇지 않습니다. 가장 좋은 방법은 if 문을 작성한 것과 같습니다.
if someBoolValue: num1 = 20
-
==============================
6.
num1 = 10 + 10*(someBoolValue == True)
그것이 나의 새로운 최종 답변이다. 이전의 대답은 다음과 같았고 명시된 문제에 대한 과잉이었다. Getting_too_clever == 좋지 않습니다. 이전 답변은 ... 참으로 cond와 False에 하나를 추가하려면 여전히 좋습니다.
num1 = 10 + (0,10)[someBoolValue == True]
당신은 num1이 이미 혼자 남겨 두어야 할 가치가 있다고 언급했습니다. 나는 그것이 게시물의 첫 문장이기 때문에 num1 = 10으로 가정 했으므로 20에 도달하는 연산은 10을 더하는 것입니다.
num1 = 10 someBoolValue = True num1 = 10 + (0,10)[someBoolValue == True] print(f'num1 = {num1}\nsomeBoolValue = {someBoolValue}')
이 산출물을 산출했다.
num1 = 20 someBoolValue = True
-
==============================
7.
num1 = 20 * someBoolValue or num1
-
==============================
8.원하는 경우 num1 = (someBoolValue else num1이면 20)을 확실히 사용할 수 있습니다.
원하는 경우 num1 = (someBoolValue else num1이면 20)을 확실히 사용할 수 있습니다.
-
==============================
9.여기 제가 제안 할 수있는 것이 있습니다. 다른 변수를 사용하여 if 절을 파생시키고 num1에 할당합니다.
여기 제가 제안 할 수있는 것이 있습니다. 다른 변수를 사용하여 if 절을 파생시키고 num1에 할당합니다.
암호:
num2 =20 if someBoolValue else num1 num1=num2
from https://stackoverflow.com/questions/7872838/one-line-if-condition-assignment by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 클래스에 대한 파일 경로를 얻으려면 어떻게해야합니까? (0) | 2018.10.21 |
---|---|
[PYTHON] 파이썬 : 파일을 표준 출력으로 출력하기 (0) | 2018.10.21 |
[PYTHON] 파이썬에서 부울을 어떻게 사용합니까? (0) | 2018.10.21 |
[PYTHON] Objective-C에서 파이썬 호출하기 (0) | 2018.10.21 |
[PYTHON] Python으로 작성된 프로그램 배포 [duplicate] (0) | 2018.10.21 |