想想这个例子:
l = [1, 2, 3, 4, 5]
for values in l:
if values == 1:
print('yes')
elif values == 2:
print('no')
else:
print('idle')
而不是打印结果,我想使用一个列表理解来创建一个结果列表,如['yes', 'no', 'idle', 'idle', 'idle']。
如何在列表理解中表示elif逻辑?到目前为止,我只在列表推导式中使用if和else,就像在列表推导式中使用if/else一样。
你可以使用列表推导式来从原始列表中创建另一个列表。
>>> 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]
>>> 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']
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']
你可以,在某种程度上。
注意,当你像这样使用sytax时:
['yes' if v == 1 else 'no' for v in l]
你正在使用if/else运算符的三元形式(如果你熟悉C之类的语言,这就像?:construct:(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语句来模拟。