在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']