我没有在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
行之间的语法和区别?
答案 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也是一个函数,就像上面的例子一样。