如何在Python中使用if-else块

  • 本文关键字:if-else Python python
  • 更新时间 :
  • 英文 :


我有一个关于Python中if-else块的问题,这里有一个例子:

a = [1,2,3]
b = [i if i%2 else i+1 for i in a]
# following sentence is wrong
c = [i if i%2 for i in a else i+1]

但在某些情况下,if可以写在for之后,就像这样:

d = [i for i in a if a%2]

我想知道这是为什么,谢谢大家!

这个问题已经解决了,再次感谢!!

在Python中实际使用if else有多种方式。最基本的用法当然是有条件地执行代码块:

if <condition>:
<body>
else:
<body>

if语句块在条件为真时执行,否则else语句块开始执行。

另一个用例是当你想有条件地赋值时:

x = y if <condition> else z

在上述条件赋值中,如果条件为真,则赋变量x为y的值,否则赋变量x为z的值,也广泛用于推导式语句和返回语句中:[i if i%2==0 else i+1 for i in <iterable>]

另一个用例是只使用if,这是在推导中用来过滤掉一些值:

x = [i for i in <iterable> if <condition>]

上面的表达式将只包含iterable中条件为真的项。

另一个用例是else,它对Python来说是非常独特的,它允许在循环后使用else块:

for i in <iterable>:
<loop body>
else:
<else body>

如果循环正常退出而没有break语句,则执行else部分,这意味着即使代码没有进入循环体,也会执行else部分。

这种if-else表达式的正式名称是(在Python文档中)条件表达式,也称为三元条件运算符。

在第二个和第三个示例中,您将其与列表推导式(列表括号中的for循环)结合使用。

在第二个示例中,将条件表达式(正确地)放在列表推导式的for循环之前。这是一个有效的语法。对于每一个被循环过的项,都计算if-else表达式。

在第三个示例中,将for循环放在if和else之间。这是无效的语法,老实说,我不知道您希望输出什么。

在你的问题结束时,你说在某些情况下,for可以放在else之前(和if之后)。在您给出的示例中,没有for

最新更新