【问题标题】:Is There '?' Control Flow in Python? [duplicate]有没有 '?' Python中的控制流? [复制]
【发布时间】:2011-12-08 08:50:48
【问题描述】:

可能重复:
Python Ternary Operator

有类似'?'的控制流算子吗? python中的C/C++?

如果有类似这样的代码块:

return n <= 1 ? n : fibo(n-1) + fibo(n-2)

会出现这样的错误:

File "fibonacci.py", line 2
    return n <= 1 ? n : fibo(n-1) + fibo(n-2)
                  ^
SyntaxError: invalid syntax

【问题讨论】:

  • 可能叫错了;它需要三个操作数,因此它是三进制的,就像加法是二进制一样。碰巧在python或其他algol后代中没有很多三元运算符。这在 phihag 的回答中被唯一标识为“条件表达式”

标签: python ternary-operator


【解决方案1】:

是的,条件表达式是available in Python 2.5+

return n if n <= 1 else fibo(n-1) + fibo(n-2)

【讨论】:

  • 需要注意的是条件是在这个python版本的中间。类 C 语言有&lt;cond&gt; ? &lt;yes_expr&gt; : &lt;no_expr&gt;,但python 有更流畅的&lt;yes_expr&gt; if &lt;cond&gt; else &lt;no_expr&gt;
【解决方案2】:

你可以试试这个短路表达式return n &gt; 1 and fibo(n-1) + fibo(n-2) or n。虽然这不是三元语句,但它很简洁,可以在这种情况下完成工作。

【讨论】:

  • 我认为这不适用于n==0
  • @NeilG 更新了我的答案。感谢您指出。
猜你喜欢
  • 2016-02-06
  • 2013-11-16
  • 2022-01-02
  • 2016-03-03
  • 1970-01-01
  • 2021-06-24
  • 2016-11-24
  • 1970-01-01
  • 2015-05-11
相关资源
最近更新 更多