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

Pythonでリスト内の累積行頻度を求める方法

リスト内の累積行頻度(各サブリストに含まれる特定要素の出現回数の合計)を求めたい場合、collectionsモジュールの「Counter」クラスとリスト内包表記を組み合わせることで、簡潔かつ効率的に実装できます。

実装例

以下に具体的なコード例を示します。

from collections import Counter

my_list = [[11, 2, 32, 4, 31], [52, 52, 3, 71, 71, 3], [1, 3], [19, 19, 40, 40, 40]]

print("The list is :")
print(my_list)

my_element_list = [19, 2, 71]

my_frequency = [Counter(element) for element in my_list]

my_result = [sum([freq[word] for word in my_element_list if word in freq]) for freq in my_frequency]

print("The resultant matrix is :")
print(my_result)

出力結果

The list is :
[[11, 2, 32, 4, 31], [52, 52, 3, 71, 71, 3], [1, 3], [19, 19, 40, 40, 40]]
The resultant matrix is :
[1, 2, 0, 2]

コードの解説

  • まず、collectionsモジュールからCounterクラスをインポートします。

  • ネストされたリスト(リストのリスト)を定義し、コンソールに表示します。

  • 検索対象となる整数のリストを別途定義します。

  • リスト内包表記とCounterメソッドを組み合わせて、各サブリストを走査し、要素ごとの出現頻度をカウントします。

  • その結果を変数に代入します。

  • 再度リスト内包表記を使用し、検索対象の要素が各サブリストに存在する場合のみ、その出現回数を合計します。

  • 計算結果を変数に代入します。

  • 最終的な結果をコンソールに出力します。

処理の流れのポイント

このコードでは、まず各サブリストをCounterオブジェクトに変換することで、要素ごとの出現回数を効率的に集計しています。その後、検索対象リスト[19, 2, 71]の各要素について、該当するサブリスト内での出現回数を合計しています。

結果として得られる[1, 2, 0, 2]は、以下を意味します。

  • 1番目のサブリスト:「2」が1回出現 → 合計1

  • 2番目のサブリスト:「71」が2回出現 → 合計2

  • 3番目のサブリスト:該当要素なし → 合計0

  • 4番目のサブリスト:「19」が2回出現 → 合計2

このように、Counterとリスト内包表記を活用すれば、複雑な頻度集計処理もわずか数行のコードで実現できます。

  1. Pythonでリストの累積和(累積合計)を求める方法

    この記事では、リストの累積和(累積合計)を求める問題の解決策について詳しく解説します。問題文あるリストが与えられたとき、各要素までの累積和を格納した新しいリストを作成する必要があります。例えば、[10, 20, 30, 40, 50] というリストが与えられた場合、出力は [10, 30, 60, 100, 150] となります。これは、各位置でそれ以前の要素をすべて足し合わせた値です。実装例それでは、実際の実装を見ていきましょう。# 累積和を求める関数 def Cumulative(l): new = [] cumsum = 0 for element in l:

  2. Pythonで辞書を使ってリスト内の要素の出現頻度を数える方法

    この記事では、リスト内に存在する各要素の出現頻度(出現回数)を計算するプログラムを紹介します。 方法1:辞書を使用する 最も基本的な方法は、リストの各要素を辞書のキーとして保存し、その出現回数を値として記録していくアプローチです。ループで要素を一つずつ取り出し、すでにキーとして登録されていればカウントを +1 し、まだ存在しなければ新たに 1 をセットします。 サンプルコード my_list = [a, b, a, c, d, c, c] frequency = {} for item in my_list: if item in frequency: frequen