【Python】レッスン4-04:リストの集計と並べ替えを理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:リストの集計・並べ替え

この記事の練習問題で使用する知識:
レッスン1~3の知識リストの定義と要素追加リストの要素削除リストの情報出力リストの集計・並べ替えリストのスライスリストのループ処理リストの内包表記タプルの定義と基本操作タプルのアンパックとネスト辞書の定義と基本操作辞書のループ処理辞書の内包表記集合の定義と基本操作

<<前の問題 問題集Top 次の問題>>

Pythonの「リストの集計と並べ替え」とは

この章ではPythonにおける「リストの集計と並べ替え」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。




Pythonではリストに格納された複数の要素を集計したり、並べ替えるための便利な組み込み関数が用意されています。

これらの関数を使用することでリスト内の最小値や最大値の取得、合計の計算、リストの並べ替えといった操作を簡単に行うことができます。

これからリストの集計と並べ替えに関する基本的な操作を見ていきましょう。

リストの集計

リストの集計に使える主な関数として、min(), max(), sum() があります。

これらの関数を使うことで、リスト内の数値の最小値、最大値、合計値を簡単に取得することができます。

  • min(): リストの中で最も小さい値を返します。
  • max(): リストの中で最も大きい値を返します。
  • sum(): リスト内の全ての要素を合計して返します。
numbers = [10, 5, 3, 8, 15]

# 最小値を取得
min_value = min(numbers)
print(f"最小値: {min_value}")

# 最大値を取得
max_value = max(numbers)
print(f"最大値: {max_value}")

# 合計を取得
sum_value = sum(numbers)
print(f"合計: {sum_value}")

上記のコードではリストnumbersから最小値、最大値、合計をそれぞれ取得しています。

結果としてmin()関数は3、max()関数は15、sum()関数は41を返します。

最小値: 3
最大値: 15
合計: 41

リストの並べ替え

リストの要素を並べ替えるためにsort()メソッドやsorted()関数を使用します。

これによりリストを昇順または降順に並べ替えることができます。またreverse()メソッドを使うと、リストの要素の順序を逆転させることも可能です。

  • sort(): リストをその場で昇順に並べ替えます(破壊的操作)。
  • sorted(): リストを昇順に並べ替えた新しいリストを返します(非破壊的操作)。
  • reverse(): リストの要素を逆順に並べ替えます。
numbers = [10, 5, 3, 8, 15]

# 昇順に並べ替え
numbers.sort()
print(f"昇順: {numbers}")

# 降順に並べ替え
numbers.sort(reverse=True)
print(f"降順: {numbers}")

# 元のリストを逆順にする
numbers.reverse()
print(f"逆順: {numbers}")

このコードではリストnumbersを昇順と降順に並べ替え、さらにreverse()メソッドで要素の順番を逆転させています。

昇順: [3, 5, 8, 10, 15]
降順: [15, 10, 8, 5, 3]
逆順: [3, 5, 8, 10, 15]

破壊的操作は、データを直接変更する操作で、元の状態に戻すことができません。例えばsort()メソッドはリストを並べ替え、元のリストに上書きします。

一方、非破壊的操作は元のデータを変更せず、新しいデータを生成します。sorted()関数は元のリストをそのまま残して、並べ替えられた新しいリストを返します。

破壊的操作はメモリ効率を優先したいときに、非破壊的操作は元データを保持したい場合に使用します。状況に応じて使い分けましょう。

リストの集計・並べ替えの実例

最後にリストの集計や並べ替えをまとめた実例を見てみましょう。

以下のコードはリストの要素を集計し、並べ替え、逆順にする一連の流れを示しています。

numbers = [4, 7, 1, 12, 9]

# 最小値、最大値、合計の取得
min_value = min(numbers)
max_value = max(numbers)
sum_value = sum(numbers)

print(f"リスト: {numbers}")
print(f"最小値: {min_value}, 最大値: {max_value}, 合計: {sum_value}")

# リストを昇順に並べ替え
numbers.sort()
print(f"昇順: {numbers}")

# リストを逆順に並べ替え
numbers.reverse()
print(f"逆順: {numbers}")

このコードを実行すると、リストの集計結果と並べ替えの結果が順番に表示されます。

リスト: [4, 7, 1, 12, 9]
最小値: 1, 最大値: 12, 合計: 33
昇順: [1, 4, 7, 9, 12]
逆順: [12, 9, 7, 4, 1]

まとめ

Pythonのリストは非常に柔軟で、数値の集計や並べ替えなど、さまざまな操作が簡単に行えます。

min(), max(), sum()といった集計関数や、sort(), reverse()といった並べ替えメソッドを活用して、リストの要素を自在に操作できるようになりましょう。

これらの基本操作を押さえておくと、より高度なプログラムの作成にも役立つでしょう。

練習問題4-4:テストの点数を集計して並べ替えよう

テストの点数(100点満点)をリストに格納し、以下の操作を行うプログラムを作成してください。

プログラムではリスト内の点数を集計し、最小値・最大値・合計・平均点を出力します。

その後、点数を昇順に並べ替え、さらに逆順に並べ替えた結果も表示します。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • scoresという名前のリストに、テストの点数を5つ格納すること(例: [88, 74, 95, 62, 80])。
  • min()関数を使って、最小点を取得し表示すること。
  • max()関数を使って、最大点を取得し表示すること。
  • sum()関数を使って、全ての点数の合計を表示すること。
  • 平均点を計算し、少数第2位まで表示すること。
  • sort()メソッドを使って、点数を昇順に並べ替え、表示すること。
  • reverse()メソッドを使って、点数を逆順に並べ替え、表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

最も低い点数: 62点
最も高い点数: 95点
合計点数: 399点
平均点: 79.80点
昇順に並べ替えた点数: [62, 74, 80, 88, 95]
逆順に並べ替えた点数: [95, 88, 80, 74, 62]

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:テストの点数を格納したリストscoresの定義
2:min関数を使用してリストの最も低い点数を変数min_scoreに代入
3:max関数を使用してリストの最も高い点数を変数max_scoreに代入
4:sum関数を使用してリストの合計点を変数sum_scoresに代入
5:リストの平均点を計算し、変数average_scoreに代入
6:最も低い点数を表示
7:最も高い点数を表示
8:合計点数を表示
9:平均点数を小数点2桁まで表示
10:sortメソッドを使用してリストscoresを昇順に並べ替え
11:昇順に並べ替えたリストを表示
12:reverseメソッドを使用してリストscoresを逆順に並べ替え
13:逆順に並べ替えたリストを表示

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# テストの点数をリストに格納して集計・並べ替えるプログラム

# テストの点数(100点満点)のリストを定義します

"""【穴埋め問題1】
ここにリストscoresを定義し、5つの点数を格納してください(例:88, 74, 95, 62, 80)
"""

# リストの集計

"""【穴埋め問題2】
min関数を使用して最も低い点数を取得し、min_scoreに代入するコードを書いてください
"""

"""【穴埋め問題3】
max関数を使用して最も高い点数を取得し、max_scoreに代入するコードを書いてください
"""

"""【穴埋め問題4】
sum関数を使用して全ての点数の合計を取得し、sum_scoresに代入するコードを書いてください
"""

"""【穴埋め問題5】
リストの平均点を計算し、average_scoreに代入するコードを書いてください
"""

# 集計結果を表示
print(f"最も低い点数: {min_score}点")
print(f"最も高い点数: {max_score}点")
print(f"合計点数: {sum_scores}点")
print(f"平均点: {average_score:.2f}点")

# リストを昇順に並べ替え

"""【穴埋め問題6】
sortメソッドを使用してリストscoresを昇順に並べ替えるコードを書いてください
"""

print(f"昇順に並べ替えた点数: {scores}")

# リストを逆順に並べ替え

"""【穴埋め問題7】
reverseメソッドを使用してリストscoresを逆順に並べ替えるコードを書いてください
"""

print(f"逆順に並べ替えた点数: {scores}")

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



解答例と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

# テストの点数をリストに格納して集計・並べ替えるプログラム

# テストの点数(100点満点)のリストを定義します
scores = [88, 74, 95, 62, 80]

# リストの集計
min_score = min(scores)  # リスト内の最も低い点数を取得
max_score = max(scores)  # リスト内の最も高い点数を取得
sum_scores = sum(scores)  # リスト内の全ての点数の合計を取得
average_score = sum_scores / len(scores)  # 平均点を計算

# 集計結果を表示
print(f"最も低い点数: {min_score}点")
print(f"最も高い点数: {max_score}点")
print(f"合計点数: {sum_scores}点")
print(f"平均点: {average_score:.2f}点")  # 小数点以下2桁まで表示

# リストを昇順に並べ替え
scores.sort()  # リストを昇順に並べ替え
print(f"昇順に並べ替えた点数: {scores}")

# リストを逆順に並べ替え
scores.reverse()  # リストを逆順に並べ替え
print(f"逆順に並べ替えた点数: {scores}")

正解コードの解説

このコードではPythonのリストを使ってテストの点数を集計し、並べ替える方法を学びます。

各ブロックでどのような処理をしているのか、文法に注目して解説します。

リストの定義

scores = [88, 74, 95, 62, 80]

ここではテストの点数をリストに格納しています。

リストは[]で囲まれた要素の集まりで、Pythonでは[88, 74, 95, 62, 80]のように数値を並べて定義します。

ここで5つのテストの点数が格納されています。

リストの集計

min_score = min(scores)
max_score = max(scores)
sum_scores = sum(scores)
average_score = sum_scores / len(scores)

このブロックでは、リスト内のデータを使って集計を行います。

  • min()はリストの中で最も小さい値を返します。この場合、62が最小値としてmin_scoreに代入されます。
  • max()はリストの中で最も大きい値を返します。95が最大値です。
  • sum()はリスト内の全ての数値を合計します。合計は399です。
  • 平均点は、合計をリストの要素数(点数の数)で割ることで求められます。len(scores)はリストの要素数を返す関数で、この場合5を返します。平均点は399 ÷ 5 = 79.8点となります。

集計結果の表示

print(f"最も低い点数: {min_score}点")
print(f"最も高い点数: {max_score}点")
print(f"合計点数: {sum_scores}点")
print(f"平均点: {average_score:.2f}点")

ここでは集計した結果を画面に表示しています。

f文字列を使うことで、変数の値を埋め込んで、わかりやすいフォーマットで表示します。

.2fは小数点以下2桁まで表示するフォーマット指定です。

リストの並べ替え(昇順)

scores.sort()
print(f"昇順に並べ替えた点数: {scores}")

sort()メソッドを使ってリスト内の要素を昇順(小さい順)に並べ替えます。

これにより[62, 74, 80, 88, 95]のように点数が小さい順に並びます。

リストの並べ替え(逆順)

scores.reverse()
print(f"逆順に並べ替えた点数: {scores}")

reverse()メソッドを使うことでリスト内の要素を逆順に並べ替えます。

sort()によって昇順になったリストが逆順になり[95, 88, 80, 74, 62]になります。

まとめ

このコードではPythonのリストを使って数値を集計し、並べ替える基本的な操作を学びました。

min()max()sum()といった関数を使ってリスト内のデータを処理し、sort()reverse()を使って並べ替えができるようになりました。

リストは非常に便利なデータ構造で、これらの基本操作を習得することでさらに高度なプログラムの作成に活かすことができます。

今後もリストの操作を練習し、データ処理に慣れていきましょう。

<<前の問題 問題集Top 次の問題>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Python記事トップへ戻る
    トップページへ戻る