if语句简化一行

时间:2013-08-08 22:04:19

标签: python if-statement

我有一个单行if语句,如下所示:

var = var if var < 1. else 1.

第一部分var = var看起来有点难看,我敢打赌,有更多的pythonic方式来说这个。

5 个答案:

答案 0 :(得分:18)

以下 39%更短,在我看来比其他答案更简单,更pythonic。 但是我们应该注意到,当{1}是min的上限时,有时人们会认为1是var函数混淆的下界。

var = min(var, 1.0)

答案 1 :(得分:9)

if var >= 1.:
    var = 1

或者如果您喜欢一个衬垫

if var >= 1.: var = 1

答案 2 :(得分:5)

不会消除var = var,但它会更短,而且可以争辩,更加pythonic:

var = min(var, 1.0)

答案 3 :(得分:4)

也许这种方式会更短

var = min(var, 1.0)

答案 4 :(得分:2)

您可以使用等于True = 1和False = 0来索引可能值的2元组:

var = (1,var)[var < 1.]

如果var < 1.,则此评估为True,相当于1.这简化为:

var = (1,var)[1]

或者

var = var

如果不是var < 1.,则计算结果为False,相当于0,给出:

var = (1,var)[0]

var = 1

所以这个单行:

var = (1,var)[var < 1.]

相当于:

if var < 1.:
    var = var
else:
    var = 1