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

Pythonで行列(リストのリスト)から空の行を除外する方法

行列(リストのリスト)から空の行を取り除きたい場合、シンプルなリスト内包表記len() メソッドを組み合わせるだけで、簡単かつ効率的に実現できます。追加のライブラリも不要なため、初心者にも扱いやすい方法です。

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

サンプルコード

my_list = [[21, 52, 4, 74], [], [7, 8, 4, 1], [], []]

print("元のリスト:")
print(my_list)

my_result = [row for row in my_list if len(row) > 0]

print("処理後のリスト:")
print(my_result)

実行結果

元のリスト:
[[21, 52, 4, 74], [], [7, 8, 4, 1], [], []]
処理後のリスト:
[[21, 52, 4, 74], [7, 8, 4, 1]]

コードの解説

  • 整数を要素として持つリストのリスト(行列)を定義し、まずコンソールに表示します。
  • リスト内包表記を使って、行列の各行を1つずつ順番に処理していきます。
  • len(row) > 0 の条件式で、その行の長さ(要素数)が0より大きいかどうかを判定します。
  • 条件を満たす(空でない)行だけが、結果のリストに格納されます。
  • 条件を満たさない(空の)行は自動的に無視され、除外されます。
  • 最終的な結果は変数 my_result に代入されます。
  • この変数を出力することで、空の行が取り除かれた新しい行列が確認できます。

補足:さらに簡潔な書き方

Pythonでは、空のリストは論理値として False と評価される性質を利用して、次のように書くこともできます。

my_result = [row for row in my_list if row]

どちらの書き方でも結果は同じですが、if row の方がよりPythonic(Pythonらしい書き方)とされています。状況に応じて使い分けるとよいでしょう。

  1. Pythonでリストの最大パワーを求める:要素を1つ移動して最大化するアルゴリズム

    問題の定義リストの「パワー」とは、すべてのインデックス i における (i + 1) × list[i] の総和として定義される値です。数式で表すと次のようになります。$$\displaystyle\sum\limits_{i=0}^{n-1} (i+1)\times list[i]$$ここで、N 個の正の整数からなるリスト nums が与えられます。私たちが行える操作は、リスト内の任意の 1 つの要素を選び、それを別の任意の位置へ移動(入れ替えではなく移動)することだけです。リストの先頭や末尾への移動も許されており、そもそも何も移動しないという選択も可能です。このとき、実現できるリストのパワ

  2. Pythonでバイナリ行列の重複行を検出!Counterを使った効率的な実装方法

    0と1だけで構成されるバイナリ行列が与えられたとき、その中から重複する行を見つけて出力するのが本記事の目的です。Pythonでは標準ライブラリの collections.Counter() を活用することで、この問題を簡潔かつ効率的に解決できます。 実行例 入力:1 1 1 10 0 0 01 1 1 10 0 0 0出力:(1, 1, 1, 1)(0, 0, 0, 0) アルゴリズムの手順 0と1のみで構成されたバイナリ行列を作成します。 辞書には「行」をキー、「その出現頻度」を値として格納します。リストは変更可能(ミュータブル)なため、まず各行をタプルに変換しておきます。 Count