すべての要素の出現頻度がKより大きい行を出力するPythonプログラム
ネストされたリスト(リストのリスト)の中から、すべての要素の出現回数が指定した値Kより大きい行だけを抽出して出力したいケースはよくあります。このような場合、2つの引数を受け取る関数を定義し、Pythonの組み込み関数 all() と繰り返し処理を組み合わせることで、簡潔に結果を得ることができます。
以下に具体的な実装例を示します。
サンプルコード
def frequency_greater_K(row, K) :
return all(row.count(element) > K for element in row)
my_list = [[11, 11, 32, 43, 12, 23], [42, 14, 55, 62, 16], [11, 11, 11, 11], [42, 54, 61, 18]]
print("The tuple is :")
print(my_list)
K = 1
print("The value of K is :")
print(K)
my_result = [row for row in my_list if frequency_greater_K(row, K)]
print("The result is :")
print(my_result)
実行結果
The tuple is : [[11, 11, 32, 43, 12, 23], [42, 14, 55, 62, 16], [11, 11, 11, 11], [42, 54, 61, 18]] The value of K is : 1 The result is : [[11, 11, 11, 11]]
コードの解説
frequency_greater_Kという名前の関数を定義します。この関数は、行(リスト)としきい値Kを引数として受け取り、ジェネレータ式で各要素の出現回数がKより大きいかどうかを判定し、その結果をall()関数でまとめて返します。すべての要素が条件を満たす場合のみTrueとなります。リストのリスト(ネストされたリスト)を変数
my_listとして定義し、コンソールに表示します。比較対象となる値として K = 1 を設定し、コンソールに表示します。
リスト内包表記を使って
my_listを反復処理し、各行に対してfrequency_greater_K関数を呼び出します。条件を満たす行だけが新しいリストに残ります。抽出結果を変数
my_resultに代入し、最後にコンソールへ出力します。
この例では、4つの要素すべてが「11」で構成される3番目のリスト [11, 11, 11, 11] のみが「各要素の出現回数が1より大きい」という条件を満たすため、結果としてこの行だけが出力されます。count() メソッドと all() 関数を組み合わせることで、複雑な条件判定もわずか数行のコードで実現できる点がポイントです。
-
指定した範囲内のすべての素数を出力するPythonプログラム
この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 ある区間が与えられたとき、その範囲内に含まれるすべての素数を求めて出力する必要があります。 ここでは、素数の基本的な定義に基づいた全探索(ブルートフォース)によるアプローチを紹介します。素数とは、「1とその数自身のみを約数として持ち、それ以外の数を約数に持たない自然数」のことです。 この定義に基づき、各数値が素数の条件を満たしているかどうかを判定し、条件が真(True)と評価されるたびに出力処理を行います。 それでは、実際の実装例を見ていきましょう。 実装例 start = 1 end = 37 for val in
-
指定された文字列のすべての順列を出力するPythonプログラム
本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +