2

次のようなワンライナーifステートメントがあります。

var = var if var < 1. else 1.

最初の部分var = varは少し見苦しく見えますが、もっと Python らしい言い方ができると思います。

4

5 に答える 5

18

以下は39%短く、私の意見では、他の回答よりもシンプルで Pythonic です。しかしmin、実際には 1 が の上限であるのに、関数によって混同されて 1 が下限であると考える人が時々間違っていることに注意する必要がありvarます。

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

または、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 に答える