Pythonif语句语法错误问题

Python if statement syntax error problems

我没有得到 pythonif 语句的一些语法:

>> 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 行之间的这种语法和区别?

您使用的 A if condition else B 语法是正确的,其中 returns 一个 表达式 被分配给您的 z 变量

你在错误的地方省略了 else 子句,所以 Python 无法猜测在不满足你的条件 all([2<3,6<7]) 的情况下要放什么,这是'不可行,所以不允许

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

if <condition>:
   z = [0]

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

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

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

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

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