没有其他的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更有效。