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

Pythonでリスト内の各キー(K)までのグループ合計を求める方法

リスト内の各キー(K)までのグループごとの合計を求めたい場合、シンプルな反復処理と「append」メソッドを組み合わせることで実現できます。この手法は、リストを先頭から順に走査し、キーと一致する要素が出現するたびにそれまでの累積合計を区切って記録していくというものです。

サンプルコード

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

from collections import defaultdict

my_list = [21, 4, 37, 46, 7, 56, 7, 69, 2, 86, 1]

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

my_key = 46
print("The key is ")
print(my_key)

my_sum = 0
my_result = []

for ele in my_list:
    if ele != my_key:
        my_sum += ele
    else:
        my_result.append(my_sum)
        my_result.append(ele)
        my_sum = 0

my_result.append(my_sum)

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

出力結果

The list is :
[21, 4, 37, 46, 7, 56, 7, 69, 2, 86, 1]
The key is
46
The resultant list is :
[62, 46, 228]

コードの解説

  • まず、必要なパッケージを環境にインポートします。
  • リストを定義し、コンソールに表示します。ここでは [21, 4, 37, 46, 7, 56, 7, 69, 2, 86, 1] を使用しています。
  • 区切りとなるキー値(ここでは 46)を定義し、コンソールに表示します。
  • 累積合計を格納する変数 my_sum を 0 で初期化します。
  • 結果を保存するための空のリスト my_result を用意します。
  • リストを順番に反復処理し、要素がキー値と一致しない場合は、その値を my_sum に加算していきます。
  • 要素がキー値と一致した場合は、それまでの合計値とキー値そのものを結果リストに追加し、my_sum を 0 に再初期化して次のグループの集計に備えます。
  • ループ終了後、最後のグループの残りの合計値を結果リストに追加します。
  • 最終的な結果リストをコンソールに出力します。

処理の流れのポイント

この例では、最初のキー値 46 の前にある要素 21、4、37 の合計である 62 が最初のグループとして記録され、続いてキー値 46 自体が追加されます。その後の要素 7、56、7、69、2、86、1 の合計である 228 が最後のグループとして出力されます。

このように、キー値を境界としてリストを複数のグループに分割しながら合計を求める処理は、ログデータの集計やセッション単位での数値解析など、さまざまな場面で応用できます。計算量はリストの長さに対して線形時間 O(n) となるため、大きなデータセットでも効率的に動作します。

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

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

  2. Pythonで配列(リスト)の合計を求める方法をわかりやすく解説

    この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に