Python if语句语法错误问题

时间:2015-01-20 06:27:51

标签: python if-statement syntax syntax-error

我没有在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行之间的语法和区别?

3 个答案:

答案 0 :(得分:4)

您正在使用正确的A if condition else B语法,该语法会返回表达式以分配给您的z变量

在错误的情况下,您省略了else条款,因此Python无法猜测如果您的条件all([2<3,6<7])未得到满足将会发生什么,而不是{\ n}&#39}。是可行的,所以不允许

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

if <condition>:
   z = [0]

或者如果你喜欢单行:if <condition>: z = [0]

答案 1 :(得分:2)

使用此语法时,您无法跳过else。请参阅:http://en.wikipedia.org/wiki/%3F:#Python

答案 2 :(得分:1)

列表理解并不是那样的,你认为它是这样的;

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

可能?在这种情况下,我们不必编写else,因为如果if语句有效,则函数由return something完成。但在列表理解中,它不是那样的。如你所知,你也不必在else中写lambda因为lambda也是一个函数,就像上面的例子一样。