在Python的列表理解中使用If-Elif-Else
我们将通过这个解释了解什么是链式,在Python中,如何在列表理解中应用if-elif-else
或链式。
借助Python中的链式,在列表理解中使用if-elif-else
在Python社区中一个有趣的问题是如何在列表理解中使用if-elif-else
。我们已经知道如何在列表理解中使用if-else
,但是我们应该知道,在编写Python脚本时,我们不能在列表理解中编写每一段代码。
在Python的列表理解中实现链式运算
在列表理解中没有if-elif-else
的概念,但是我们可以使用链式,这将是一个替代方案。首先,我们需要知道什么是链式。
链式是在我们有多个条件时使用的,比如:
if condition1:
code1
elif condition2:
code2
elif condition3:
code3
else condition4:
code4
上面的代码说明,链式的工作流程不做任何事情。这表明,如果第一个条件不满足真,第二个条件就会被执行。
如果任何条件不满足真,else
块就会被执行。
让我们把这些if-elif-else
转换成链式,但当每个条件都包含一个单一的语句时,它就会工作。为了创建链式,我们将从code1
开始,并检查该指令是否满足真,然后控制将检查第二个链式,即else code2 if condition2
。
code1 if condition1 else code2 if condition2 else code3 if consition3 else condition4
如果else code2 if condition2
满足为真,那么控件将进入第三条链路,即else code3 if consition3
。而且,如果它也满足真,那么控制就会进入第四个链,也就是else condition4
。
这就是所谓的链式,也是它的工作原理。
在Python中用if-elif-else
来理解列表
让我们举个例子,跳到Python脚本中,看看如何应用这个场景进行链式运算。
假设我们有一个程序,如果任何条件满足真,就存储状态。在这个程序中,我们将对一个列表进行迭代,检查几个条件,并将结果附加到一个空白列表中,称为status
。
list= [1,0,2,-3,11,0,-1]
status=[]
for i in list:
if i >0:
status.append('Positive')
elif i <0:
status.append('Negative')
else:
status.append('Zero')
print(status)
输出:
['Positive', 'Zero', 'Positive', 'Negative', 'Positive', 'Zero', 'Negative']
我们可以将上述代码转换成列表理解,这将是一行代码。记住,列表理解并不是对每一段代码都有效,也不允许有elif
块或子句,但我们将通过链式使用elif
。
为了创建一个列表理解,我们将创建一个空列表并放置三个链。我们在上面的伪代码中也看了如何进行链式运算。
列表理解不允许使用append()
函数,但它会追加元素本身。我们可以通过使用链式来放置几个以上的条件。
print(['Positive' if i > 0 else 'Negative' if i <0 else 'zero' for i in list])
输出:
['Positive', 'zero', 'Positive', 'Negative', 'Positive', 'zero', 'Negative']