답변:
Python의 조건식 은 다음과 같은 사용 사례를 위해 정확히 설계되었습니다.
>>> l = [1, 2, 3, 4, 5]
>>> ['yes' if v == 1 else 'no' if v == 2 else 'idle' for v in l]
['yes', 'no', 'idle', 'idle', 'idle']
도움이 되었기를 바랍니다 :-)
['yes', 'no']
만들어 져야만했을 것 입니다. 이렇게하려면 다음을 수행 할 수 있습니다 ['yes' if v == 1 else 'no' for v in l if values in [1,2]]
.. 나는 현재 이것을하는 더 깨끗한 방법을 생각할 수 없습니다.
>>> d = {1: 'yes', 2: 'no'}
>>> [d.get(x, 'idle') for x in l]
['yes', 'no', 'idle', 'idle', 'idle']
'A' if grade>=90 else 'B' if grade>=80 else 'C' if grade>=70 else 'F'
.
d
이해력 밖에서 정의하는 이점이 있다면 ?
당신은 할 수 있습니다.
다음과 같은 구문을 사용할 때 유의하십시오.
['yes' if v == 1 else 'no' for v in l]
if / else 연산자의 삼항 형식을 사용하고 있습니다 (C와 같은 언어에 익숙하다면 다음 ?:
구문과 같습니다 (v == 1 ? 'yes' : 'no')
:).
if / else 연산자의 삼항 형식에는 'elif'가 내장되어 있지 않지만 'else'조건에서 시뮬레이션 할 수 있습니다.
['yes' if v == 1 else 'no' if v == 2 else 'idle' for v in l]
이것은 다음과 같습니다.
for v in l:
if v == 1 :
print 'yes'
else:
if v == 2:
print 'no'
else:
print 'idle'
그래서 당신이 요청한 것과 같은 직접적인 'elif'구조는 없지만 중첩 된 if / else 문으로 시뮬레이션 할 수 있습니다.
아마도 당신은 이것을 원할 것입니다 :
l = [1, 2, 3, 4, 5]
print ([['idle','no','yes'][2*(n==1)+(n==2)] for n in l])
또 다른 쉬운 방법은 다음과 같이 조건부 목록 이해를 사용하는 것입니다.
l=[1,2,3,4,5]
print [[["no","yes"][v==1],"idle"][v!=1 and v!=2] for v in l]
올바른 답변을 제공합니다.
[ 'yes', 'no', 'idle', 'idle', 'idle']