0

変数が多数の変数から最小値を持っていることを見つけるためのpythonicな方法はありますか? 例えば

In [5]: if d<c and d<b and d<a:
   ...:     print "d is minimum.."
   ...:     
d is minimum..

ここでは変数が 3 つしかないので、and を使用して実行できますが、比較する変数が非常に多い場合はどうなるでしょうか。他のすべての変数でdが最大
かどうか を一度にチェックする場合を教えてください。d が他のすべての変数と等しいことを確認するのはどうですか? 私の解決策:

比較する必要があるすべての変数をリストに追加して、それらを 1 つずつ比較することができるかもしれませんが、Python を使用してこれを行うより良い方法があるに違いないと思います。

4

4 に答える 4

8

which を使用allすると、短絡するので効率的です。

if all(d < i for i in [1,5,4,4,6,6,4,4,5]) 

i反復可能な場所

あなたの例は次のようになります。

if all(d < i for i in (c, b, a))
于 2012-09-05T12:41:59.127 に答える
5

min関数を見ましたか?

if d <= min(c,b,a):
   ...

もちろん、イテラブルも使用できます。

if d <= min([c,b,a]):
   ...

明示的であるため、このバージョンが気に入っています。とても読みやすいです。JonClements が指摘しているように、大規模なセットに対してこれを行うより効率的な方法がある可能性があります。

于 2012-09-05T12:41:47.250 に答える
1
>>> a=2
>>> b=6
>>> c=5
>>> d=1
>>> d==min(a,b,c,d)
True
于 2012-09-05T12:42:44.693 に答える
1

Python の組み込み関数よりPythonicに近いものは何ですか?min

f = [a,b,c]
if d < min(f):
    print "d is the minimum"

.(..そして、ここに Python の組み込みのmin関数のドキュメントがあります)

関数を使用できるより効率的な方法をall探している場合は、要素の 1 つが小さいことがわかったら、d反復を停止して false を返します。

if all(d < x for x in a):
    print "d is the minimum"
于 2012-09-05T12:43:09.607 に答える