1. ホーム
  2. python

Pythonは同点の場合、どの最大値を選ぶのでしょうか?

2023-11-12 06:13:44

質問

を使用する場合 max() 関数を使用してリスト(またはタプル、dictなど)の最大値を見つけるために、最大値のために同点がある場合、Pythonはどれを選ぶのですか?それはランダムですか?

これは、例えば、タプルのリストがあり、最大値を選択する場合、関連します( key= を使って)最大値を選択しますが、異なる2番目の要素がある場合です。Pythonはどのように最大値として選択するものを決定するのでしょうか?

どのように解決するのですか?

最初に見た要素を選びます。参照 のドキュメントを参照してください。 max() :

複数の項目が最大である場合、この関数は最初に出会ったものを返します。これは、以下のような他のソート安定性保持ツールと一致します。 sorted(iterable, key=keyfunc, reverse=True)[0]heapq.nlargest(1, iterable, key=keyfunc) .

ソースコードではこのように実装されています。 ./Python/bltinmodule.cbuiltin_max を包んでいる より一般的な min_max 機能 .

min_max は値を反復処理し PyObject_RichCompareBool を使って現在の値より大きいかどうかを調べます。もしそうなら、より大きな値がそれに取って代わります。等しい値はスキップされます。

その結果、同値の場合は最初の最大値が選択されます。