没有其他的Python三元运算符

是否有可能在Python的1行上做到这一点?

if <condition>: myList.append('myString') 

我尝试了三元运算符

 myList.append('myString' if <condition>) 

但我的IDE(MyEclipse)不喜欢没有别的。

是的,你可以这样做:

 <condition> and myList.append('myString') 

如果<condition>是错误的,那么短路就会进入,右侧将不被评估。 如果<condition>为真,则右侧将被评估,并且该元素将被追加。

我只是指出,做上述是非pythonic,这可能是最好的写这个,不pipe:

 if <condition>: myList.append('myString') 

示范:

 >>> myList = [] >>> False and myList.append('myString') False >>> myList [] >>> True and myList.append('myString') >>> myList ['myString'] 

语言不允许您使用语法的原因

 variable = "something" if a_condition 

没有别的是,在a_condition == False的情况下, variable突然是未知的。 也许它可以默认为None ,但是Python要求所有variables赋值实际上导致明确的赋值。 这也适用于您的函数调用等情况,因为传递给函数的值的计算方式与赋值语句的RHS一样。

同样,所有的回报都必须实际返回,即使它们是条件回报。 例如:

 return variable if a_condition 

是不允许的,但是

 return variable if a_condition else None 

是允许的,因为第二个例子保certificate确地返回一些东西。

 if <condition>: myList.append('myString') 

否则,不。 为什么需要把它放在一条线上?

请注意,“三元操作符”是一个操作符 。 像任何运算符一样,它必须返回一些东西 ,那么如果没有else子句,你怎么能有一个三元运算符呢? 如果条件不是真的,它应该返回什么?

myList.extend(['myString'] if condition else [])也可以工作,尽pipe它比其他解决scheme更有效。