Pythonで要素がすべてKの倍数である行をフィルタリングする方法
Pythonでは、リスト内包表記と剰余演算子(%)を組み合わせることで、ネストされたリストの中から「すべての要素がKの倍数である行」だけを簡単に抽出できます。この記事では、その具体的な実装方法をサンプルコードとともに解説します。
サンプルコード
以下は、要素がすべてKの倍数である行をフィルタリングする実際のコード例です。
my_list = [[15, 10, 25], [14, 28, 23], [120, 55], [55, 30, 203]]
print("The list is :")
print(my_list)
K = 5
print("The value of K is ")
print(K)
my_result = [index for index in my_list if all(element % K == 0 for element in index)]
print("The result is :")
print(my_result)実行結果
The list is : [[15, 10, 25], [14, 28, 23], [120, 55], [55, 30, 203]] The value of K is 5 The result is : [[15, 10, 25], [120, 55]]
コードの解説
まず、複数のリストを含むネストされたリスト(リストのリスト)を定義し、コンソールに表示します。
次に、判定の基準となる変数「K」の値を定義し、コンソールに出力します。ここでは K = 5 を設定しています。
リスト内包表記を使って元のリストを1行ずつ反復処理し、各行の各要素について
element % K == 0(Kで割った余りが0であるか)を判定します。組み込み関数 all() を使用することで、行内のすべての要素が条件を満たしているかどうかを一括してチェックできます。1つでも条件を満たさない要素があれば、その行は除外されます。
条件の評価結果が「True」となった行のみが新しいリストとして変数
my_resultに格納されます。最後に、フィルタリング後の結果をコンソールに表示します。
ポイントまとめ
剰余演算子(%):ある数を別の数で割った余りを求める演算子です。余りが0であれば、その数は割る数の倍数であることを意味します。
all() 関数:イテラブル内のすべての要素が真(True)である場合に True を返します。今回のように「全要素が条件を満たすか」を確認する際に非常に便利です。
リスト内包表記:forループとif文を1行で簡潔に記述できるPython特有の構文で、可読性の高いフィルタリング処理を実現します。
この手法を使えば、データの前処理やバリデーションなど、さまざまな場面で特定の条件を満たす行だけを効率的に抽出できます。
-
Pythonでリスト内の要素の出現頻度(出現回数)を数える方法
この記事では、Pythonでリスト内の各要素が何回出現するか(出現頻度)を調べる方法を解説します。実装のアプローチはいくつかありますが、ここでは代表的な2つの方法を紹介します。 方法1:辞書を使って手動でカウントする まず、辞書を活用してロジックを自前で実装する基本の方法から見ていきましょう。以下の手順でコードを作成します。 要素を含むリストと、空の辞書を用意します。 リストの各要素を順番に処理します。 その要素がすでに辞書に存在するかどうかを確認します。 存在する場合は、対応するカウントを1つ増やします。 存在しない場合は、カウントを1で新しく登録します。 最後に結果の辞書を出力し
-
【Python】リストの値を複数の変数に一括代入する3つの方法
プログラムの要件によっては、リストに格納された複数の値を一度に複数の変数へ代入し、以降の計算処理などで活用したい場面があります。本記事では、このような処理を実現するためのさまざまなアプローチを、サンプルコードと実行結果とともに紹介します。 for文(リスト内包表記)を使う方法 forループとリスト内包表記を組み合わせると、指定したインデックス位置の要素を順番に取り出しながら、宣言した変数へ代入できます。どのインデックスの値をどの変数に割り当てるかを明示的に指定できるのが特徴です。 サンプルコード listA = [Mon, 2pm, 1.5, 11 miles] # 元のリスト pr