Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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ループ+appendmaxの組み合わせが基本となります。より簡潔に書きたい場合は、zipと内包表記を活用しましょう。可読性と効率のバランスを考慮しながら、状況に応じて使い分けることが大切です。

  1. Pythonでリスト内の最大値・最小値の位置を見つける方法

    Pythonでは、リスト内の最大値や最小値を求めるのが非常に簡単で、それらの位置(インデックス)も簡単に取得できます。Pythonには便利な組み込み関数が用意されており、min()はリスト内の最小値を求め、max()はリスト内の最大値を求めます。さらに、index()を使えば特定の要素のインデックス(位置)を調べることができます。 アルゴリズム maxminposition(A, n) /* Aはユーザーが入力したリスト、nはリストのサイズ */ ステップ1:組み込み関数を使って最小要素の位置を求める A.index(min(A)) ステップ2:組み込み関数を使って最

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5