【Python】別のリストを基準にK要素の最大値を取得する方法
Pythonでは、あるリストの値を基準に、もう一方のリストから対応する要素を取り出し、その中の最大値を求めたいケースがあります。このような場合、シンプルなforループによる反復処理と、appendメソッド、max関数を組み合わせることで簡単に実現できます。
サンプルコード
以下に具体的な実装例を示します。
my_list_1 = [62, 25, 32, 98, 75, 12, 46, 53]
my_list_2 = [91, 42, 48, 76, 23, 17, 42, 83]
print("最初のリスト : ")
print(my_list_1)
print("ソート後の最初のリスト : ")
my_list_1.sort()
print(my_list_1)
print("2番目のリスト : ")
print(my_list_2)
print("ソート後の2番目のリスト : ")
my_list_2.sort()
print(my_list_2)
K = 42
print("Kの値 : ")
print(K)
my_result = []
for index in range(len(my_list_1)):
if my_list_2[index] == K :
my_result.append(my_list_1[index])
my_result = max(my_result)
print("結果 : ")
print(my_result)
出力結果
最初のリスト : [62, 25, 32, 98, 75, 12, 46, 53] ソート後の最初のリスト : [12, 25, 32, 46, 53, 62, 75, 98] 2番目のリスト : [91, 42, 48, 76, 23, 17, 42, 83] ソート後の2番目のリスト : [17, 23, 42, 42, 48, 76, 83, 91] Kの値 : 42 結果 : 46
処理の流れと解説
まず2つのリストを定義し、コンソールに表示します。
sortメソッドでそれぞれのリストを昇順に並べ替え、結果を表示します。基準となる値Kを定義し、コンソールに表示します。
条件に合致した要素を格納するための空のリストを用意します。
forループで最初のリストのインデックスを順に走査します。
各インデックスにおいて、2番目のリストの要素がKと一致するかどうかを判定します。
一致した場合、最初のリストの同じインデックスにある要素を
appendメソッドで空のリストに追加します。収集したすべての要素に対して
max関数を適用し、最大値を求めます。その最大値を変数に代入し、最後にコンソールへ出力します。
よりPythonicな書き方:zipと内包表記の活用
上記のコードはロジックが分かりやすい反面、やや冗長です。zip関数とジェネレータ式を組み合わせると、同じ処理を1行で簡潔に記述できます。
my_list_1 = [62, 25, 32, 98, 75, 12, 46, 53]
my_list_2 = [91, 42, 48, 76, 23, 17, 42, 83]
K = 42
my_result = max(x1 for x1, x2 in zip(my_list_1, my_list_2) if x2 == K)
print("結果 : ", my_result)
この方法では、2つのリストの要素をインデックスごとにペア化し、2番目のリストの要素がKと一致するペアだけを抽出して最大値を計算します。なお、この手法では事前のソートは必須ではありません。また、該当する要素が1つも存在しない場合、max関数はValueErrorを発生させるため、必要に応じてdefault引数(Python 3.4以降)を指定しておくと安全です。
# 該当要素がない場合に備えた安全な書き方 my_result = max((x1 for x1, x2 in zip(my_list_1, my_list_2) if x2 == K), default=None)
まとめ
別のリストの値を条件に、対応する要素の最大値を取得するには、forループ+append+maxの組み合わせが基本となります。より簡潔に書きたい場合は、zipと内包表記を活用しましょう。可読性と効率のバランスを考慮しながら、状況に応じて使い分けることが大切です。
-
Pythonでリスト内の最大値・最小値の位置を見つける方法
Pythonでは、リスト内の最大値や最小値を求めるのが非常に簡単で、それらの位置(インデックス)も簡単に取得できます。Pythonには便利な組み込み関数が用意されており、min()はリスト内の最小値を求め、max()はリスト内の最大値を求めます。さらに、index()を使えば特定の要素のインデックス(位置)を調べることができます。 アルゴリズム maxminposition(A, n) /* Aはユーザーが入力したリスト、nはリストのサイズ */ ステップ1:組み込み関数を使って最小要素の位置を求める A.index(min(A)) ステップ2:組み込み関数を使って最
-
Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで
Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5