2

if我有一个看起来像这样的单行语句:

var = var if var < 1. else 1.

第一部分var = var看起来有点难看,我敢打赌有一种更 Pythonic 的方式来表达这一点。

4

5 回答 5

18

以下内容缩短了39%,在我看来,它比其他答案更简单、更 Python。但是我们应该注意,有时人们会错误地认为 1 是被min函数混淆的下限,而实际上 1 是 的上限var

var = min(var, 1.0)
于 2013-08-08T22:06:55.420 回答
9
if var >= 1.:
    var = 1

或者如果你喜欢一个衬垫

if var >= 1.: var = 1
于 2013-08-08T22:06:55.690 回答
5

并没有消除,var = var但它更短,人们可能会争论,更pythonic:

var = min(var, 1.0)
于 2013-08-08T22:07:17.193 回答
4

也许这种方式会更短

var = min(var, 1.0)
于 2013-08-08T22:07:47.337 回答
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
于 2013-08-08T23:08:08.617 回答