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

Pythonのリストで特定の要素の出現頻度の合計を求める方法

リストには同じ要素が何度も含まれていることがあります。この記事では、リスト内に繰り返し現れる特定の要素に着目し、それらの出現回数(頻度)の合計を求める方法を2つ紹介します。

sum関数とcountメソッドを使う方法

まず、分析対象となる元のリストと、出現回数を調べたい値だけを格納したリストの2つを用意します。ジェネレータ式の中でcount()メソッドを使い、調べたい各要素が元のリストに何回出現するかを数え、最後にsum()関数で合計を算出します。

コード例

chk_list = ['Mon', 'Tue']
big_list = ['Mon', 'Tue', 'Wed', 'Mon', 'Mon', 'Tue']

# sum関数で頻度の合計を求める
res = sum(big_list.count(elem) for elem in chk_list)

# 結果を出力
print("分析対象のリスト:\n", big_list)
print("出現回数を調べる値のリスト:\n", chk_list)
print("頻度の合計:", res)

実行結果

上記のコードを実行すると、次のような結果が得られます。

分析対象のリスト:
['Mon', 'Tue', 'Wed', 'Mon', 'Mon', 'Tue']
出現回数を調べる値のリスト:
['Mon', 'Tue']
頻度の合計: 5

collections.Counterを使う方法

collectionsモジュールのCounterクラスを使うと、同じ処理をより効率的に行えます。Counterに元のリストを渡すことで全要素の出現回数を一度にカウントでき、あとは調べたい要素のリストをループしながら該当する値を取り出して合計するだけです。要素数の多いリストでは、count()を繰り返し呼び出す方法よりもパフォーマンス面で有利になります。

コード例

from collections import Counter

chk_list = ['Mon', 'Tue']
big_list = ['Mon', 'Tue', 'Wed', 'Mon', 'Mon', 'Tue']

# Counterで頻度の合計を求める
res = sum(Counter(big_list)[x] for x in chk_list)

# 結果を出力
print("分析対象のリスト:\n", big_list)
print("出現回数を調べる値のリスト:\n", chk_list)
print("頻度の合計:", res)

実行結果

上記のコードを実行すると、次のような結果が得られます。

分析対象のリスト:
['Mon', 'Tue', 'Wed', 'Mon', 'Mon', 'Tue']
出現回数を調べる値のリスト:
['Mon', 'Tue']
頻度の合計: 5

まとめ

手軽に書きたい場合はsum()count()の組み合わせ、大きなリストや多数の要素を調べる場合はcollections.Counterの活用がおすすめです。用途に応じて使い分けるとよいでしょう。

  1. リスト内の要素の合計を求めるPythonプログラム

    この記事では、Pythonを使ってリスト内のすべての要素の合計を求める方法について、具体的なコード例とともに解説します。問題の定義リストが入力として与えられたとき、そのリストに含まれるすべての要素の合計値を計算する必要があります。例えば、[1, 2, 3, 4, 5]というリストが与えられた場合、出力は 15(1+2+3+4+5)となります。この問題を解くためのアプローチは主に2つあります。1つは組み込み関数を使用する方法、もう1つはブルートフォース(総当たり)方式でループ処理を行う方法です。方法1:組み込み関数 sum() を使うPythonには標準で用意されている組み込み関数 sum()

  2. Pythonでリストの平均値を求める方法

    Pythonには、複数の要素の合計を簡単に計算できる組み込み関数 sum() が用意されています。ここでは、この関数を使ってリスト内のすべての数値の合計を求め、その後、合計を要素数で割ることで平均値を計算します。 アルゴリズム ステップ1:「リストのサイズ」を入力する ステップ2:「要素」を入力する ステップ3:sum関数を使用して、すべての数値の合計を計算する ステップ4:平均値を計算する サンプルコード # リストの平均値を求める A=list() n=int(input(Enter the size of the List ::)) print(Enter the number :