【问题标题】:Python if statement syntax error problemsPython if 语句语法错误问题
【发布时间】:2015-01-20 06:27:51
【问题描述】:

我没有得到 python 中 if 语句的语法:

>> z=[0 if all([2<3,6<7]) else sth]    #Correct
>>
>> z=[0 if all([2<3,6<7])]             #Wrong
  File "<stdin>", line 1
    z=[0 if all([2<3,6<7])]
                          ^
SyntaxError: invalid syntax
>>

我不知道Correct 行和Wrong 行之间的这种语法和区别?

【问题讨论】:

  • 为了澄清,假设all 条件为假。您希望为z 分配什么值?

标签: python if-statement syntax syntax-error


【解决方案1】:

您在正确的语法中使用了 A if condition else B 语法,它返回一个 表达式 以分配给您的 z 变量

在错误的情况下,您省略了 else 子句,因此 Python 无法猜测在不满足您的条件 all([2&lt;3,6&lt;7]) 的情况下要放置什么,这是不可行的,因此是不允许的

如果您只想在这种情况下设置一个值,那么:

if <condition>:
   z = [0]

或者如果你喜欢单行:if &lt;condition&gt;: z = [0]

【讨论】:

    【解决方案2】:

    使用此语法时不能跳过else。见:http://en.wikipedia.org/wiki/%3F:#Python

    【讨论】:

      【解决方案3】:

      列表推导式不是那样工作的,你认为它是这样的;

      def sm():
          if somethingelse:
              return something
          return something1
      

      大概吧?在这种情况下,我们不必写else,因为如果if 语句有效,则函数由return something 完成。但在列表推导中,情况并非如此。如您所知,您不必在 lambda 中也写 else,因为 lambda 也是一个函数,就像上面的示例一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-06
        • 2011-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多