Pythonで行列から指定された長さの行を抽出して出力する方法
行列(リストのリスト)の中から、特定の長さを持つ行だけを取り出して表示したい場合があります。そんなときは、リスト内包表記を使うことで、シンプルかつ効率的に処理を実現できます。
サンプルコード
以下に具体的な実装例を示します。
my_list = [[22, 4, 63, 7], [24, 4, 85], [95], [2, 55, 4, 7, 91], [5, 31, 1]]
print("The list is :")
print(my_list)
my_key = 4
my_result = [sub for sub in my_list if len(sub) == my_key]
print("The resultant list is :")
print(my_result)実行結果
The list is : [[22, 4, 63, 7], [24, 4, 85], [95], [2, 55, 4, 7, 91], [5, 31, 1]] The resultant list is : [[22, 4, 63, 7]]
コードの解説
まず、複数のリストを要素として持つ「リストのリスト」(行列)を定義し、コンソールに表示します。
次に、抽出条件となるキー値(ここでは
4)を定義します。これは「要素数が4個の行」を取り出すという意味になります。リスト内包表記を使って行列の各行を順番に走査し、組み込み関数
len()で取得した各行の長さがキー値と一致するかどうかを判定します。条件を満たした行だけが新しいリストとしてまとめられ、変数
my_resultに代入されます。最後に、抽出結果をコンソールに出力します。
ポイント
この例では、元の行列に含まれる5つの行のうち、要素数がちょうど4つである [22, 4, 63, 7] のみが抽出されています。len() はリストの要素数を返す組み込み関数であり、リスト内包表記の if 句と組み合わせることで、条件に合致する要素だけを簡潔にフィルタリングできます。
なお、== を >= や <= に変更すれば、「指定した長さ以上」「以下」といった柔軟な条件での抽出も可能です。
-
Pythonで指定した文字を使って作成できる最長単語の長さを求めるプログラム
文字列のリスト words と、別の文字列 letters が与えられたとします。このとき、letters に含まれる文字だけを使って作成できる words 内の最も長い文字列の長さを求めます。どの単語も作成できない場合は 0 を返します。なお、同じ文字を再利用することはできません。例として、words = [dog, cat, rat, bunny, lion, bat]、letters = gabctnyu の場合を考えてみましょう。このとき出力は 3 になります。「cat」や「bat」なら与えられた文字で作成できますが、それより長い単語は作れないため、最大の長さは 3 となるからです。解
-
Pythonで行列の転置を求めるプログラムの作成方法
行列の転置とはn × n の行列 M が与えられたとき、その転置行列(transpose)を求めることを考えます。転置行列とは、行と列のインデックスを入れ替えた行列のことで、形式的には、すべての行番号 r と列番号 c に対して次の関係が成り立ちます。matrix[r][c] = matrix[c][r]つまり、元の行列の r 行 c 列にある要素は、転置後の行列では c 行 r 列へと移動します。入力例726372537出力例(転置行列)735273627解法のアプローチこの問題は、以下の手順に従って解くことができます。結果を格納するための新しいリスト M を用意します。カウンター trac