elif
목록 이해에서 사용할 수 있습니까 ?
예 :
l = [1, 2, 3, 4, 5]
for values in l:
if values==1:
print 'yes'
elif values==2:
print 'no'
else:
print 'idle'
elif
위 코드와 비슷한 방식으로 목록 이해력에 를 포함 할 수 있습니까 ?
예를 들어 다음과 같은 답변이 있습니다.
['yes', 'no', 'idle', 'idle', 'idle']
지금까지, 나는 단지 사용한 if
및 else
지능형리스트입니다.
답변
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']
도움이 되었기를 바랍니다 🙂
답변
>>> d = {1: 'yes', 2: 'no'}
>>> [d.get(x, 'idle') for x in l]
['yes', 'no', 'idle', 'idle', 'idle']
답변
당신은 할 수 있습니다.
다음과 같은 구문을 사용할 때 유의하십시오.
['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]
>>> result_map = {1: 'yes', 2: 'no'}
>>> [result_map[x] if x in result_map else 'idle' for x in l]
['yes', 'no', 'idle', 'idle', 'idle']
답변
또 다른 쉬운 방법은 다음과 같이 조건부 목록 이해를 사용하는 것입니다.
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’]