파이썬에서 한 줄로 할 수 있습니까?
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']
E701 multiple statements on one line
그래서 파이썬이 아닙니다 ...;)
x = object.get('attribute')
입니다
언어가 구문 사용을 허용하지 않는 이유
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
두 번째 예제는 명시 적으로 무언가를 반환하도록 보장되기 때문에 허용됩니다.
variable=None
완벽하게 합법적 이지 않도록하는 것은 아이러니합니다 . : D
continue if i == 0
. for 루프에서.
else pass?
else pass
삼항 표현식이에 전달할 수있는 값을 반환해야하기 때문에 작동하지 않습니다 return
. pass
유효한 return
값 이 아닙니다 .
if a_condition: variable = "something"
및 if a_condition: return variable
법적 있습니다. 따라서 본질적으로 파이썬의 임의의 구문 선택입니다.
기본적으로 구성을 요청합니다 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.append('myString') if <condition> else False
또는
myList.append('myString') if <condition> else 0
myList.append('myString') if True else _
그러나 당신이 아무것도 할당하지 않는다면, 중요하지 않습니다. 나는이 사람이 비슷한 논리로 목록을 이해하려고 시도하는 것에 대해 걱정하고 있습니다.
조건에 따라 목록에 선택적 요소를 추가하려면이 작업을 수행합니다.
nums = [
1,
2,
3 if <condition> else None,
4,
]
nums = [i for i in nums if i is not None]
조건이 충족되지 않으면 값을 None으로 바꾼 다음 나중에 None Values없이 목록을 재정의합니다. 이런 식으로 조건이 충족되면 색인을 보존합니다.