回答:
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]
あなたに正しい答えを与えます:
[「はい」、「いいえ」、「アイドル」、「アイドル」、「アイドル」]