この記事で書いていること
-
リスト中の最大値・最小値を求める方法
-
リスト中の最大値・最小値のインデックス番号を求める方法
- 最大値・最小値が一つ/複数の場合
-
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
と内包表記を利用
コメント