파이썬 삼항 연산자없이
파이썬에서 한 줄로 할 수 있습니까?
if <condition>:
myList.append('myString')
삼항 연산자를 시도했습니다.
myList.append('myString' if <condition>)
하지만 내 IDE ( MyEclipse )는 else
.
예, 다음과 같이 할 수 있습니다.
<condition> and myList.append('myString')
경우 <condition>
거짓, 다음에 시작된다 단락과 오른쪽은 평가되지 않습니다. 경우 <condition>
에 해당하고, 그 오른쪽이 평가되고 요소가 추가된다.
위의 작업을하는 것은 비 파이썬 적이 지 않다는 점을 지적 할 것입니다.
if <condition>: myList.append('myString')
데모:
>>> myList = []
>>> False and myList.append('myString')
False
>>> myList
[]
>>> True and myList.append('myString')
>>> myList
['myString']
언어가 구문 사용을 허용하지 않는 이유
variable = "something" if a_condition
하지 않고는 else
경우 여기서,이다 a_condition == False
, variable
갑자기 알 수 없습니다. 기본값은 None
이지만 파이썬은 모든 변수 할당이 실제로 명시 적 할당을 생성하도록 요구합니다. 이는 함수 호출과 같은 경우에도 적용됩니다. 함수에 전달 된 값 은 할당 문의 RHS 와 같이 평가 되기 때문입니다.
마찬가지로 모든 return
s는 조건부라고해도 실제로 반환해야합니다 return
. 예 :
return variable if a_condition
허용되지 않지만
return variable if a_condition else None
두 번째 예제는 명시 적으로 무언가를 반환하도록 보장되기 때문에 허용됩니다.
if <condition>: myList.append('myString')
그렇지 않으면 아닙니다. 한 줄에 넣어야하는 이유는 무엇입니까?
"삼항 연산자"는 연산자 입니다. 다른 연산자와 마찬가지로 무언가를 반환해야 하므로 else
절 없이 삼항 연산자를 어떻게 가질 수 있습니까? 조건이 참과 같지 않으면 무엇을 반환해야합니까?
기본적으로 구성을 요청합니다 do_thing() if <condition> else pass
( SyntaxError
실행 되면을 던질 것입니다 ). 내가 연구하는 동안 (다소) 비슷한 질문 do_thing() if condition else None
이 당신이 얻을 수있는 한 가깝다 는 것을 발견했듯이 (이것은 할 수있는 또 다른 방법입니다 <condition> and do_thing()
). 따라서이 아이디어와 다른 답변을 요약하면 다음과 같은 옵션이 있습니다.
if <condition>: myList.append('myString')
— '해키'가 가장 적은 (따라서 선호되는) 방법 인 것 같습니다.<condition> and myList.append('myString')
myList.append('myString') if <condition> else None
myList.extend(['myString'] if condition else [])
다른 솔루션보다 더 많은 작업이지만 작동합니다.
다음과 같이 할 수 있습니다.
myList.append('myString') if <condition> else False
또는
myList.append('myString') if <condition> else 0
참고 URL : https://stackoverflow.com/questions/12199757/python-ternary-operator-without-else
'IT TIP' 카테고리의 다른 글
.NET Framework 3.5 용 Tuple (.NET 4)에 해당 (0) | 2020.12.10 |
---|---|
git은 특별히 명명 된 파일 2 개를 무시하지 않습니다. (0) | 2020.12.10 |
android getIntrinsicHeight 및 getIntrinsicWidth는 무엇을 의미합니까? (0) | 2020.12.10 |
WKWebView로 마이그레이션하는 방법? (0) | 2020.12.10 |
Maven 체크 스타일 비활성화 (0) | 2020.12.10 |