Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリスト要素のランク(順位)を求める方法

データ構造の中に含まれる各要素のランク(順位)を求めたいケースでは、リストを引数として受け取る関数を定義するのが基本的なアプローチです。この関数はリストの要素を反復処理しながら他の要素との比較を行い、2つの変数の値を更新することで各要素のランクを算出します。

サンプルコード

以下に具体的な実装例を示します。

def find_rank_elem(my_list):
   my_result = [0 for x in range(len(my_list))]
   for elem in range(len(my_list)):
      (r, s) = (1, 1)
      for j in range(len(my_list)):
         if j != elem and my_list[j] < my_list[elem]:
            r += 1
         if j != elem and my_list[j] == my_list[elem]:
            s += 1

      my_result[elem] = r + (s - 1) / 2

   return my_result

my_list = [1, 3, 5, 3, 1, 26, 99, 45, 67, 12]
print("The list is :")
print(my_list)
print("The resultant list is :")
print(find_rank_elem(my_list))

出力結果

The list is :
[1, 3, 5, 3, 1, 26, 99, 45, 67, 12]
The resultant list is :
[1, 3, 5, 3, 1, 7, 10, 8, 9, 6]

解説

  • まず、「find_rank_elem」という名前の関数を定義し、リストを引数として受け取ります。

  • 元のリストと同じ長さの結果格納用リストを、すべて0で初期化して作成します。

  • 外側のループでリストの各要素を取り出し、内側のループで全要素と比較します。

  • 自分以外の要素が現在の要素より小さい場合は変数「r」を、等しい場合は変数「s」をそれぞれ1ずつ増やします。

  • 最終的なランクは「r + (s - 1) / 2」で計算され、同点の要素が存在する場合でも平均的なランクが適切に割り当てられます。

  • 計算が完了したら、結果を格納したリストを戻り値として返します。

  • 関数の外側でテスト用のリストを定義し、その内容をコンソールに表示します。

  • このリストを引数として関数を呼び出し、得られた結果のリストをコンソールに出力します。

なお、Python 3では「/」による除算は浮動小数点数を返すため、出力を整数にしたい場合は「//」(整数除算)に置き換えるとより見やすい結果になります。

  1. Pythonでインデックスに基づいてネストされたリストに要素を加算する方法

    Pythonでは、リストの中にさらにリストを入れた「ネストされたリスト(入れ子構造のリスト)」を作成できます。本記事では、シンプルなリストの各要素を、ネストされたリストの対応する要素に加算する方法を解説します。リスト同士の長さが異なる場合、短い方のリストの長さが結果のリストの最大長となります。以下に、この処理を実現する複数の方法を紹介します。forループを使用する方法この方法では、短い方のリストの長さを取得し、その要素を順番にループ処理しながら、大きい方のリストの対応する要素に加算していきます。各要素はappend()関数を使って結果リストに追加します。コード例simple_list = [2

  2. 【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法

    リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day