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

Pythonで行範囲内の最大値を求める方法

ネストされたリスト(リストの中にリストが入った構造)から、指定した行範囲内の最大値を求める必要がある場合は、range関数による単純な反復処理maxメソッドを組み合わせることで実現できます。

以下に具体的な実装例を示します。

サンプルコード

my_list = [[11, 35, 6], [9, 11, 3], [35, 4, 2],[8, 15, 35], [5, 9, 18], [5, 14, 2]]

print("The list is :")
print(my_list)

i, j = 2, 4
print("The values for integers are ")
print(i, j)

my_result = 0
for index in range(i, j):

    my_result = max(max(my_list[index]), my_result)

print("The result is :")
print(my_result)

出力結果

The list is :
[[11, 35, 6], [9, 11, 3], [35, 4, 2], [8, 15, 35], [5, 9, 18], [5, 14, 2]]
The values for integers are
2 4
The result is :
35

コードの解説

  • まず、リストの中にリストが含まれるネストされたデータ構造を定義し、コンソールに表示します。

  • 次に、2つの整数値(i と j)を定義して表示します。この例では i=2、j=4 となっており、3行目から4行目までが抽出対象の範囲となります。

  • 結果を格納するための変数 my_result を 0 で初期化します。

  • range(i, j) を使って、指定された範囲のインデックスを順番に反復処理します。

  • 各インデックスに対応する行に対して max(my_list[index]) でその行の最大値を求め、現在の my_result と比較して、より大きい方を変数に代入していきます。

  • ループが完了した時点で、範囲内全体の最大値が得られ、それがコンソールに出力されます。

より簡潔な書き方(補足)

上記のコードは初心者にも分かりやすい書き方ですが、Pythonではリストのスライスとジェネレータ式を組み合わせることで、同じ処理を1行で記述することもできます。

my_result = max(max(row) for row in my_list[i:j])
print("The result is :", my_result)  # 出力: 35

my_list[i:j] の部分で指定範囲の行だけを取り出し、その各行の最大値を比較しています。可読性と効率の両面で優れているため、実務ではこちらの書き方が好まれることも多いです。

  1. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実

  2. Pythonで数値のピラミッドを生成する方法|基本パターンをコード例付きで解説

    Pythonでは、数値を使ったピラミッド(三角形のパターン)を生成する方法がいくつかあります。この記事では、最も基本的な3つのパターンを、実際のコード例と出力結果とともにわかりやすく解説します。 パターン1:各行で1から連番を出力する まずは基本となる形です。外側のループで行数を制御し、内側のループで各行に出力する数字の個数を制御します。内側のループ変数 j に1を足すことで、1から始まる連番を表示しています。 for i in range(5): for j in range(i + 1): print(j + 1, end=) print() 出力結果 1