【Python入門】リスト内でKより大きい数値のインデックスを取得する方法
このチュートリアルでは、Pythonを使って、リスト内の指定した数値 K より大きい要素のインデックス(位置)を求める方法を解説します。初心者にもわかりやすいように、代表的な2つのアプローチを順番に見ていきましょう。
方法1:forループとrange()を使う方法
最も基本的な解決方法は、ループ処理を使うことです。処理の手順は以下の通りです。
- リストと基準値 K を初期化する
- リストの長さをもとに、range() でインデックスを順に走査する
- 要素が K より大きい場合、そのインデックスを出力する
サンプルコード
# リストとKを初期化
numbers = [3, 4, 5, 23, 12, 10, 16]
K = 10
# リストを走査
for i in range(len(numbers)):
# Kより大きい数値かどうかを判定
if numbers[i] > K:
# 該当するインデックスを出力
print(i, end=' ')
実行結果
上記のコードを実行すると、次の出力が得られます。
3 4 6
この例では、リスト numbers の中で 23(インデックス3)、12(インデックス4)、16(インデックス6)が K=10 より大きいため、これらのインデックスが出力されています。
方法2:enumerate()関数とリスト内包表記を使う方法
次に、よりPythonらしい書き方として enumerate() 関数を使う方法を紹介します。enumerate() は各イテレーションごとに「インデックス」と「要素」をまとめたタプルを返してくれるため、コードを簡潔に書くことができます。
サンプルコード
# リストとKを初期化 numbers = [3, 4, 5, 23, 12, 10, 16] K = 10 # enumerate()でKより大きい数値のインデックスを抽出 result = [index for (index, number) in enumerate(numbers) if number > K] # 結果を出力 print(*result)
実行結果
3 4 6
リスト内包表記と組み合わせることで、条件に合うインデックスだけを新しいリストとして一括取得できるのがポイントです。可読性が高く、実務でもよく使われる書き方なので覚えておくと便利です。
まとめ
今回は、リスト内の K より大きい数値のインデックスを求める2つの方法を学びました。
- forループ + range():基本の考え方が身につく、定番の方法
- enumerate() + リスト内包表記:簡潔でPythonicな書き方
小さなリストならどちらでも問題ありませんが、コードの簡潔さを重視するなら enumerate() を使った方法がおすすめです。チュートリアルについて疑問点がある場合は、コメント欄でお気軽に質問してください。
-
Pythonで配列内の複数の数値の最大公約数(GCD)を求める方法
はじめに本記事では、Pythonを使って配列(リスト)内の2つ以上の数値から最大公約数(GCD:Greatest Common Divisor)を求める方法を解説します。問題の概要数値の配列が与えられ、そのすべての要素に共通する最大公約数を求めることが目的です。3つ以上の数値のGCDは、「引数として渡されたすべての数値に共通する素因数の積」として定義できます。また、隣り合う2つの数値のGCDを繰り返し計算していくことでも求められます。ここでは、後者のアプローチである「ペアごとのGCDを順番に計算する」方法を実装します。アルゴリズムの流れまず、リストの最初の2つの要素のGCDを計算します。次に、
-
Pythonで複数の数値や配列の最大公約数(GCD)を求める方法
本記事では、以下の問題に対する解決策について詳しく解説します。問題の概要与えられた数値の配列から、それらすべての最大公約数(GCD)を求める必要があります。アプローチ2つより多い数値の最大公約数を求める場合、GCDは引数として渡されたすべての数値に共通する素因数の積と等しくなります。これは数学的な定義に基づく方法ですが、実装がやや複雑になります。もう一つの方法として、2つの数値ずつペアでGCDを繰り返し計算するという手法があります。具体的には、最初の2つの数値のGCDを求め、その結果と次の数値のGCDを計算し、これを配列の最後まで繰り返します。本記事では、後者のアプローチを実装していきます。実