Python – リスト内の各要素以上の数の頻度(個数)を求める方法
はじめに
リスト内の各要素について、その値以上の数がいくつ含まれているか(頻度)を調べたい場合があります。Pythonでは、リスト内包表記とsum()メソッドを組み合わせることで、この処理を簡潔に実装できます。
以下に具体的なサンプルコードと実行結果を示します。
サンプルコード
my_list = [24, 13, 72, 22, 12, 47]
print("リストの内容:")
print(my_list)
my_result = [sum(1 for element in my_list if index <= element) for index in my_list]
print("結果:")
print(my_result)
実行結果
リストの内容: [24, 13, 72, 22, 12, 47] 結果: [3, 5, 1, 4, 6, 2]
コードの解説
まず、整数のリスト
my_listを定義し、その内容をコンソールに表示します。リスト内包表記の外側のループで、リストの各要素を
indexとして順番に取り出します。内側のジェネレータ式では、リスト内の各要素
elementがindex以上であるかどうかを判定し、条件を満たすたびに 1 をカウントします。sum()メソッドがこれらの 1 を合計することで、「その要素以上の値の個数」が求まります。結果はリストとして新しい変数に代入されます。最後に、計算結果をコンソールに出力します。
動作の具体例
例えば、最初の要素「24」の場合、リスト内で 24 以上の値は「24・72・47」の 3 つなので、結果は 3 になります。同様に「13」なら 5 個、「72」なら 1 個(自分自身のみ)、「12」なら 6 個(すべての要素)というように、各要素ごとの頻度が計算されます。
補足:計算量について
この方法は各要素ごとにリスト全体を走査するため、計算量は O(n²) となります。小規模なリストでは問題ありませんが、大量のデータを扱う場合は、リストをソートした上で bisect モジュール(二分探索)を利用することで、O(n log n) まで高速化できます。
-
Pythonのリストから最大値を取得する方法|max()関数の使い方を解説
Pythonで最大値を見つけるには?Pythonには、リストなどのイテラブル(反復可能なオブジェクト)の中から最大の数値を簡単に取り出すための組み込み関数 max() が用意されています。この関数は、カンマ区切りで渡した複数の数値、あるいはリスト・タプルなどのコレクションを引数に受け取ることができます。基本的な使い方まず、複数の数値を直接引数として渡す例を見てみましょう。>>> max(10, 23, 43, 21) 43このように、max() に数値をカンマ区切りで渡すと、その中で最も大きい値である 43 が返されます。リストから最大値を取得する次に、リストを引数として渡す
-
Pythonでリスト内の要素のインデックスを取得する方法
index()メソッドで最初の出現位置を取得する リスト(文字列やタプルなど、他のシーケンス型でも同様)に用意されている index() メソッドを使うと、特定の要素が最初に出現する位置(インデックス)を簡単に見つけることができます。 >>> L1=[a, b, c, a, x] >>> L1 [a, b, c, a, x] >>> L1.index(a) 0 この例では、リスト L1 の中で a が最初に出現するのはインデックス 0 の位置であるため、0 が返されます。なお、指定した要素がリスト内に存在しない場合は ValueError