Python – リスト内のKより大きい要素の平均を求める方法
はじめに
Pythonでは、リストの中から特定の値(K)より大きい要素だけを取り出し、その個数や平均値を求めたい場面がよくあります。こうした処理は、シンプルなforループによる反復処理だけで簡単に実現できます。
本記事では、まず「Kより大きい要素の個数を数える」基本形を確認し、そのあとで「平均値を求める」方法へ拡張したサンプルコードを紹介します。
サンプルコード
my_list = [11, 17, 25, 16, 23, 18]
print('リストの内容:')
print(my_list)
K = 15
print('Kの値:')
print(K)
# Kより大きい要素の個数と合計を求める
my_count = 0
my_sum = 0
for index in my_list:
if index > K:
my_count += 1
my_sum += index
# 平均を計算(0除算エラーを防止)
my_average = my_sum / my_count if my_count > 0 else 0
print('Kより大きい要素の個数:')
print(my_count)
print('Kより大きい要素の平均:')
print(my_average)
実行結果
リストの内容: [11, 17, 25, 16, 23, 18] Kの値: 15 Kより大きい要素の個数: 5 Kより大きい要素の平均: 19.8
処理の流れ(解説)
- まず、整数のリストを定義し、コンソールに表示します。
- 比較の基準となる値Kを定義し、こちらもコンソールに表示します。
- カウント用の変数
my_countと、合計用の変数my_sumを0で初期化します。 - forループでリストの要素を1つずつ取り出し、それぞれがKより大きいかどうかを比較します。
- Kより大きい場合は、カウントを1増やすと同時に、その値を合計に加算します。
- ループ終了後、合計を個数で割ることで平均値を求めます。該当要素が1件もない場合に0除算エラーが発生しないよう、条件分岐で保護している点がポイントです。
- 最後に、個数と平均値をコンソールに出力します。
リスト内包表記を使った別解
よりPythonらしい簡潔な書き方をしたい場合は、リスト内包表記と組み込み関数sum()・len()を組み合わせる方法も便利です。
my_list = [11, 17, 25, 16, 23, 18]
K = 15
filtered = [x for x in my_list if x > K]
average = sum(filtered) / len(filtered) if filtered else 0
print(f'Kより大きい要素: {filtered}')
print(f'個数: {len(filtered)}')
print(f'平均: {average}')
この方法では、条件に合う要素を先にフィルタリングしてから統計量を計算するため、コードの意図がひと目でわかりやすいのが特徴です。条件式の部分はx > K以外にも、x >= Kやx % 2 == 0など、目的に応じて自由に置き換えられます。
まとめ
Kより大きい要素の抽出と集計は、forループを使った基本形でも、リスト内包表記を使った簡潔な書き方でも実装できます。どちらのアプローチも、データ分析の前処理などで頻出するパターンなので、用途に応じて使い分けられるようにしておきましょう。
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
Pythonの内包表記(Comprehension)とは?リスト・辞書・セット・ジェネレータの使い方を解説
Pythonでは、既存のシーケンスをもとにして新しいシーケンスを作成できます。この手法は「内包表記(Comprehension)」と呼ばれます。内包表記とは、別のシーケンスを使用して、リスト・辞書・セット・ジェネレータといった新しいシーケンスを生成するための、簡潔なコードの書き方です。異なる型のシーケンス間で複数段階の変換を行うことも可能です。 リスト内包表記(List Comprehension) リスト内包表記では、既存のリストの値を加工しながら新しいリストを作成します。以下の例では、与えられたリストの各要素に3を加算した新しいリストを生成しています。 例 given_list = [x