【问题标题】:How to use if-else block in Python如何在 Python 中使用 if-else 块
【发布时间】:2022-07-07 18:01:16
【问题描述】:

我有一个关于 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]

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

def func(num):
    return "True" if num%2 else "False"

不知道是什么原因,谢谢大家!

【问题讨论】:

  • 你的最后一个例子在任何地方都没有for
  • 示例的第二部分没有for 语句。语法与您的 b = 语句非常一致
  • 这是一个列表推导,在网上搜索你很容易找到它。
  • 您可以在列表推导中使用单个表达式,i if i%2 else i+1 在 python 中用作三元运算符
  • 有几十种语言的数千个教程,你为什么不自己做任何研究?

标签: python


【解决方案1】:

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

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

条件为真时执行if块,否则执行else块。

另一个用例是当您想要有条件地分配值时:

x = y if <condition> else z

在上面的条件赋值中,如果条件为真,变量x被赋值为y,否则被赋值为z。它也广泛用于理解和返回语句:[i if i%2==0 else i+1 for i in &lt;iterable&gt;]

另一个用例是仅使用if,这用于在理解中过滤掉一些值:

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

上面的表达式将只包含条件成立的可迭代项。

另一个用例是 else,它是 Python 独有的,它允许在循环后使用 else 块:

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

else 部分将在循环正常退出且没有 break 语句的情况下执行,这意味着即使代码没有进入循环体,else 部分也会被执行。

【讨论】:

    【解决方案2】:

    这种类型的 if-else 表达式正式(在 Python 文档中)称为 conditional expression,也称为 ternary conditional operator

    在您的第二个和第三个示例中,您将其与 list comprehension 结合在一起 - 列表括号中的 for 循环。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多