파이썬에서 한 줄로 할 수 있습니까?
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
이지만 Python은 모든 변수 할당이 실제로 명시 적 할당을 생성하도록 요구합니다. 이는 함수 호출과 같은 경우에도 적용됩니다. 함수에 전달 된 값 은 할당 문의 RHS 와 같이 평가 되기 때문입니다.
마찬가지로, 모든는 return
조건부라고해도 실제로 반환해야합니다 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
답변
조건에 따라 목록에 선택적 요소를 추가하려면이 작업을 수행합니다.
nums = [
1,
2,
3 if <condition> else None,
4,
]
nums = [i for i in nums if i is not None]
조건이 충족되지 않으면 값을 None으로 바꾼 다음 나중에 None Values없이 목록을 재정의합니다. 이런 식으로 조건이 충족되면 색인을 보존합니다.