Pythonでリスト内の要素の出現頻度(出現回数)を数える方法
この記事では、Pythonでリスト内の各要素が何回出現するか(出現頻度)を調べる方法を解説します。実装のアプローチはいくつかありますが、ここでは代表的な2つの方法を紹介します。
方法1:辞書を使って手動でカウントする
まず、辞書を活用してロジックを自前で実装する基本の方法から見ていきましょう。以下の手順でコードを作成します。
- 要素を含むリストと、空の辞書を用意します。
- リストの各要素を順番に処理します。
- その要素がすでに辞書に存在するかどうかを確認します。
- 存在する場合は、対応するカウントを1つ増やします。
- 存在しない場合は、カウントを1で新しく登録します。
- 最後に結果の辞書を出力します。
コード例
# リストの初期化
random_list = ['A', 'A', 'B', 'C', 'B', 'D', 'D', 'A', 'B']
frequency = {}
# リストを反復処理
for item in random_list:
# 辞書に要素が存在するか確認
if item in frequency:
# カウントを増やす
frequency[item] += 1
else:
# カウントを1で初期化
frequency[item] = 1
# 頻度を出力
print(frequency)
上記のコードを実行すると、次のような結果が得られます。
実行結果
{'A': 3, 'B': 3, 'C': 1, 'D': 2}
方法2:collections.Counter を使う
次に、Pythonの標準ライブラリである collections モジュールを活用した、よりシンプルで効率的な方法を紹介します。以下の手順で実装します。
collectionsモジュールをインポートします。- 要素を含むリストを用意します。
Counterクラスを使って、各要素の頻度を一括で取得します。- 結果を
dict()で辞書形式に変換し、出力します。
コード例
# モジュールのインポート import collections # リストの初期化 random_list = ['A', 'A', 'B', 'C', 'B', 'D', 'D', 'A', 'B'] # Counterを使って要素の頻度を求める frequency = collections.Counter(random_list) # 頻度を出力 print(dict(frequency))
こちらのコードを実行しても、先ほどと同じ結果になります。
実行結果
{'A': 3, 'B': 3, 'C': 1, 'D': 2}
まとめ
リストの要素頻度を数えるには、辞書を手動で操作する方法とcollections.Counter を使う方法の2通りがあります。短く簡潔に書ける点では Counter が便利ですが、内部の仕組みを理解する練習として、手動での実装にも挑戦してみてください。本記事について不明な点がある場合は、コメント欄でお気軽にお尋ねください。
-
Pythonでリストから指定したインデックスの複数要素を削除する方法
Pythonのリストから単一の要素を削除するのは、del文とインデックスを組み合わせれば簡単に行えます。しかし、複数のインデックスに該当する要素をまとめて削除したいケースでは、少し工夫が必要です。本記事では、削除対象となるインデックスのリストを指定して、元のリストから該当する要素だけを取り除く方法を2つ紹介します。方法1:sorted()とdelを組み合わせるこのアプローチでは、まず削除したい位置(インデックス)を格納したリストを作成します。その後、降順にソートしてから後ろの要素から順に削除することで、削除処理中にインデックスがずれる問題を回避し、元のリストの構造を保ったまま安全に要素を削除で
-
【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法
リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day