【Python】リストの最大値・最小値を求める

IT

この記事で書いていること

  • リスト中の最大値・最小値を求める方法

  • リスト中の最大値・最小値のインデックス番号を求める方法

    • 最大値・最小値が一つ/複数の場合
  • max minで最大値・最小値

  • 【リスト】.index(【値】)で該当する値が何番目のインデックスか

    が求められる

ただし、最大値、最小値が複数存在する場合には注意が必要

コードと実行結果

コード

print("【値の重複なしの場合】")
list_a = [2, 5, 1, 7, 3]

print("最大値:", end="")
print(max(list_a))
print("最大値のインデックス番号:", end="")
print(list_a.index(max(list_a)))

print("最小値:", end="")
print(min(list_a))
print("最小値のインデックス番号:", end="")
print(list_a.index(min(list_a)))

print("【値の重複ありの場合】")
list_b = [2, 5, 2, 7, 3]

print("最小値:", end="")
print(min(list_b))
# ↑と同じやり方だと最初の一つしか出ない
print("最小値のインデックス番号:", end="")
print(list_b.index(min(list_b)))

mins = [index for index, val in enumerate(list_b) if val == min(list_b)]
print("最小値のインデックス番号(一覧):", end="")
print(mins)

実行結果

【値の重複なしの場合】
最大値:7
最大値のインデックス番号:3
最小値:1
最小値のインデックス番号:2
【値の重複ありの場合】
最小値:2
最小値のインデックス番号:0
最小値のインデックス番号(一覧):[0, 2]

解説

最大値・最小値とそれが何番目か求める方法

リスト中の最大値・最小値の取得

max(【リスト】)
min(【リスト】)

最大値・最小値が何番目にあるか

【リスト】.index(max(【リスト】) or min(【リスト】))

で取得できる

  • これは最大値・最小値を求めるものでは無く、index(【値】)と等価の値のインデックスを取得する
    • 今回は最大値・最小値取得と組み合わせて使用する
    • インデックス番号は0,1,2,3,・・・と0から数える
コード例
# リストを定義
list_a = [2, 5, 1, 7, 3]

# 最大値
print(max(list_a))
# 何番目のインデックスか
print(list_a.index(max(list_a)))

実行結果

7
3

最大値・最小値とそれが何番目か求める方法(重複ありの場合)

  • ↑と同じ方法で求めると、インデックス番号は1番目しか出ない
    
    # リストを定義
    list_b = [2, 5, 2, 7, 3]

最小値

print(min(list_b))

最小値のインデックス番号

print(list_b.index(min(list_b)))


**実行結果**

2
0


そのため、enumerate関数と内包表記を使用する
- 内包表記は必須ではないが、コードが簡潔になるので、使用する

※内包表記については後日、まとめてアウトプットしたいです

#### コード例
```python:
list_b = [2, 5, 2, 7, 3]

# 最小値
print(min(list_b))

mins = [index for index, val in enumerate(list_b) if val == min(list_b)]
print("最小値のインデックス番号(一覧):", end="")
print(mins)

実行結果

最小値のインデックス番号:0
最小値のインデックス番号(一覧):[0, 2]
  • index, val in enumerate(list_b)list_bのインデックスと値を取得→index, valに格納
  • valの値を取得
  • min(list_b)min(list_b)valが同じところを判定する
  • minsに格納

まとめ

  • リストの中から最大値・最小値を求める方法をまとめた
    • 最大値・最小値を取るインデックスが
    • 1つの場合
    • 2つの場合
  • 2つの場合は工夫が必要
    • enumerateと内包表記を利用

コメント

タイトルとURLをコピーしました