【レッスン4-04】リスト内の集計と並べ替えの基本|Pythonデータ構造

ながみえ
【Python学習記事のアイキャッチ画像】Lesson4-4 リストの集計と並び替えを理解しよう

一つ前のLessonではリストの情報調査について学習しました。

今回はリストの集計・並べ替えについて見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数とスコープ編

Lesson4:データ構造編
・Lesson4-1:リストの定義と要素の追加を理解しよう
・Lesson4-2:リストの要素を削除しよう
・Lesson4-3:リストの情報を調べよう
・Lesson4-4:リストの集計・並べ替えを理解しよう ◁今回はココ
・Lesson4-5:リストのスライスを理解しよう
・Lesson4-6:リストのループ処理を理解しよう
・Lesson4-7:リストの内包表記を理解しよう
・Lesson4-8:リスト・タプル・辞書・集合の概要と違いを理解しよう
・Lesson4-9:タプルの基本を理解しよう
・Lesson4-10:タプルのアンパックを理解しよう
・Lesson4-11:辞書の基本を理解しよう
・Lesson4-12:辞書のループ処理を理解しよう
・Lesson4-13:辞書の内包表記を使ってリストから辞書を作ろう
・Lesson4-13:集合(セット)の基本を理解しよう
・練習問題4-1:宝探しゲームを作ろう
・練習問題4-2:ナインゲームを作ろう 
・練習問題4-3:マルバツゲームを作ろう
Lesson5:オブジェクト指向編
次のステップ:Python基礎習得者にお勧めの道5選(実務or副業)

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson4-3 リストの情報出力を理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson4-5 リストのスライスを理解しよう

最小値・最大値・平均値・並べ替えでリストを効率的に集計しよう

ここからリストの集計・並び替えの説明に入ります。

ページ下部にはこのページで出てくる用語の意味をまとめた 用語集 もありますので、分からない言葉が出てきたらそちらも参考にしてください。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

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

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

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

リストの集計

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

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

  • min()関数: リストの中で最も小さい値を返します。
  • max()関数: リストの中で最も大きい値を返します。
  • sum()関数: リスト内の全ての要素を合計して返します。
numbers = [10, 5, 3, 8, 15] # 5つの数値を要素に持つリストを作成し、変数numbersに代入

# 最小値を取得
min_value = min(numbers) # min()関数でnumbers内の最小値を取得して変数min_valueに代入
print(f"最小値: {min_value}")

# 最大値を取得
max_value = max(numbers) # max()関数でnumbers内の最大値を取得して変数max_valueに代入
print(f"最大値: {max_value}")

# 合計を取得
sum_value = sum(numbers) # sum()関数でnumbers内の要素の合計を取得して変数sum_valueに代入
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() # sort()メソッドでnumbersの要素を昇順に並び替え
print(f"昇順: {numbers}")

# リストを降順に並べ替え
numbers.sort(reverse=True) # sort()メソッドにキーワード引数reverseを付けてnumbersの要素を降順に並び替え
print(f"降順: {numbers}")

# 新リストの作成
new_numbers = sorted(numbers) # sprter()関数で、numbersの要素を昇順に並べた新リストを作成し、変数に代入
print(f"新リスト(昇順): {new_numbers}")

# リスト(8行目で降順に並び替え済み))を逆順にする
numbers.reverse() # reverse()メソッドでnumbersの要素を逆順に並び替え
print(f"逆順: {numbers}")

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

昇順: [3, 5, 8, 10, 15]
降順: [15, 10, 8, 5, 3]
新リスト(昇順): [3, 5, 8, 10, 15]
逆順: [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()といった並べ替えメソッドを活用して、リストの要素を自在に操作できるようになりましょう。

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

Q
サイト改善アンケート|1分だけ、ご意見をお聞かせください

本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、ご利用者のみなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。

ご協力いただけますと幸いです。

アンケート
1.このサイトをどのように活用していますか?また、今後どのように活用したいですか?
5.気になっているサービス・商品があれば教えてください。
(複数選択可)

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

【Python】勉強猫がノートパソコンに向かい、練習問題に挑戦する様子。記事内の休憩用イラスト

テストの点数(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からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント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:逆順に並べ替えたリストを表示

Q
ヒント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}")

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

問題の答え合わせと解説

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

一つの正解例

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

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

# テストの点数(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のリストを使ってテストの点数を集計し、並べ替える方法を学びます。

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

Q
詳細解説

リストの定義

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()を使って並べ替えができるようになりました。

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

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

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPython学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

【Python学習記事のアイキャッチ画像】Lesson4-3 リストの情報出力を理解しよう

Pythonの記事一覧

Python学習カテゴリの親ページ用アイキャッチ画像(テキスト&問題集)、記事一覧へのリンク案内

次のページ>>

【Python学習記事のアイキャッチ画像】Lesson4-5 リストのスライスを理解しよう

Python用語集|リストの集計・並び替え編

今回の記事で出てきた用語・関数などを一覧で紹介します。

このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。

Python用語定義・使い方の概要解説記事へのリンク
リスト順序付きの複数の値を格納するデータ構造。要素の変更や操作が可能Lesson4-1
min() 関数イテラブルの中で最も小さい値を返す組み込み関数本記事
max() 関数イテラブルの中で最も大きい値を返す組み込み関数本記事
sum() 関数数値のイテラブルの合計値を返す組み込み関数本記事
sort() メソッドリスト自身を昇順(または指定順)に並び替えるメソッド。元のリストが変更される(破壊的)本記事
sorted() 関数イテラブルを並び替えて新しいリストを返す関数。元のデータは変更されない(非破壊的)本記事
reverse() メソッドリストの要素順序を逆に並べ替える破壊的メソッド本記事
破壊的操作元のデータそのものを変更する操作。sort()reverse() などが該当本記事
非破壊的操作元のデータを変更せず、新しい値や構造を返す操作。sorted() などが該当本記事
キーワード引数関数呼び出し時に引数名を指定して値を渡す方法。引数の順序に依存せず明示的に設定可能なし

FAQ|Pythonリストの集計と並べ替え

Q
Q1. リスト内の値の平均はどう計算しますか?

組み込み関数sum()len()を使って sum(list) / len(list) とするのが基本です。複雑な計算にはstatisticsモジュールが便利です。

Q
Q2. sort()とsorted()の違いは何ですか?

sort()はリストをその場で変更し、戻り値はNone。一方、sorted()新しいリストを返すため、元のリストを保持したまま並び替えできます。

Q
Q3. リストを降順に並べるにはどうしますか?

sort(reverse=True) または sorted(list, reverse=True) を使用することで、リストを降順に並べ替え可能です。

記事URLをコピーしました