行の合計値に基づいて行列(リストのリスト)を並べ替えるPythonプログラム
行の合計に基づいて行列を並べ替える方法
Pythonでは、行列(リストのリスト)を「各行の要素の合計値」を基準にして並べ替えることができます。この処理を実現するには、sum()関数を使って各行の合計を求め、その結果をもとにソートを行うメソッドを定義します。
以下に、具体的な実装例を示します。
サンプルコード
def sort_sum(row):
return sum(row)
my_list = [[34, 51], [32, 15, 67], [12, 41], [54, 36, 22]]
print("元のリスト:")
print(my_list)
my_list.sort(key=sort_sum)
print("並べ替え後の結果:")
print(my_list)
実行結果
元のリスト: [[34, 51], [32, 15, 67], [12, 41], [54, 36, 22]] 並べ替え後の結果: [[12, 41], [34, 51], [54, 36, 22], [32, 15, 67]]
コードの解説
sort_sumという名前の関数を定義します。この関数はリストを引数として受け取り、sum()関数を使ってそのリスト内の全要素の合計値を返します。複数のリストを含むリスト(行列)を定義し、コンソールに表示します。
リストの
sort()メソッドを呼び出す際、key引数に先ほど定義したsort_sum関数を指定します。これにより、各行の合計値が小さい順に並べ替えられます。最後に、並べ替えられた結果をコンソールに出力します。
補足:lambdaを使った簡潔な書き方
専用の関数を定義しなくても、lambda式を使えば同じ処理を1行で記述できます。
my_list.sort(key=lambda row: sum(row))
また、元のリストを変更せずに新しい並べ替え済みリストを作成したい場合は、組み込み関数のsorted()を使用すると便利です。
-
Pythonで特定のペア合計を持つ行をフィルタリングする方法
リストの中から、特定の合計値になる2つの要素(ペア)を含む行だけを抽出したい場面はよくあります。Pythonでは、専用の関数を定義し、リスト内包表記と組み合わせることで、この処理をシンプルかつ効率的に実現できます。本記事では、指定したキー(目標値)と一致するペア合計を持つ行をフィルタリングするプログラムを、コード例・実行結果・詳しい解説とともに紹介します。コード例def find_sum_pair(val, key): for index in range(len(val)): for ix in range(index +
-
Pythonでリストの累積和(累積合計)を求める方法
この記事では、リストの累積和(累積合計)を求める問題の解決策について詳しく解説します。問題文あるリストが与えられたとき、各要素までの累積和を格納した新しいリストを作成する必要があります。例えば、[10, 20, 30, 40, 50] というリストが与えられた場合、出力は [10, 30, 60, 100, 150] となります。これは、各位置でそれ以前の要素をすべて足し合わせた値です。実装例それでは、実際の実装を見ていきましょう。# 累積和を求める関数 def Cumulative(l): new = [] cumsum = 0 for element in l: