Home » Python » Pythonでn番目に大きい値を取得する

Pythonでn番目に大きい値を取得する

動作検証バージョン:Windows 10 + Python 3.7.3

「パイソン 2番目に大きい値」
「Python max関数 2番目に大きい」
「python max 上からn番目の値を取得 関数」
といった検索キーワードでのアクセスが、割とあります。

n番目に大きい値を、Pythonで取得するにはどうすればいいのか、探していらしたのでしょう。

[スポンサードリンク]

n番目に大きい値を取得するサンプルコード

ExcelのLARGE関数のようなメソッドを持つライブラリーもありそうですが、並べ替えを行えばn番目の値を取得できます。


nums = [5, 1, 3, 2, 4]
sorted(nums)[-2]

上記のコードをIDLEのShellウィンドウで実行すると、2番目に大きな「4」が出力されます。

つづけて
  sorted(nums)[-3]
を実行すれば3番目に大きな「3」が出力されます。

もちろん
  sorted(nums)[-1]
を実行した場合はmax()関数と同じく「5」が出力されます。

sorted()関数は並べ替えを行う

Pythonのsorted()関数は昇順で並べ替えを行い、新たなリストを返す関数です。

例えば、
  nums = [5, 1, 3, 2, 4]
  sorted(nums)
を実行すると
  [1, 2, 3, 4, 5]
が出力されます。

2番目に大きい値を取得するということは、このリストの後ろから2つ目を取得するということですから、
  sorted(nums)[-2]
と、インデックス「-2」を指定します。

setオブジェクトを使ってn番目に大きい値を取得する

元の数値が、
  nums = [5, 5, 1, 2, 3]
のとき、上記の
  sorted(nums)[-2]
では「5」が返されます。

「2番目に大きい」の定義次第ですが、このリストで「3」を取得したいのならば、
  sorted(set(nums))[-2]
です。

set()関数を使うと、重複しない要素を持つsetオブジェクトを取得できます。

例えば、
  nums = [5, 5, 1, 2, 3]
  set(nums)
を実行すると、
  {5, 1, 2, 3}
が出力されます。
これを先ほどと同じくsorted()関数を使って昇順で並べ替え、
  sorted(set(nums))[-2]
後ろから2番目を取得しているのが、
  sorted(set(nums))[-2]
です。

最終更新日時:2019-05-03 18:11

[スポンサードリンク]

Home » Python » Pythonでn番目に大きい値を取得する

TrackBack:0

TrackBack URL

Home » Python » Pythonでn番目に大きい値を取得する

Copyright © インストラクターのネタ帳 All Rights Reserved.

.