Python – 積がKより大きいタプルをフィルタリングする方法
Pythonでは、タプルの要素の積が特定の値Kより大きいタプルだけをリストから抽出したい場合、リスト内包表記を使うことで簡潔に実現できます。この記事では、独自の関数でタプルの積を計算し、条件に合うタプルをフィルタリングする方法を解説します。
コード例
以下に、積がKより大きいタプルをフィルタリングする実装例を示します。
def tuples_product(index):
my_result = 1
for element in index:
my_result *= element
return my_result
my_list = [(14, 25, 17), (2, 3, 5), (81, 42, 21), (6, 2, 1)]
print("The list is :")
print(my_list)
K = 15
print("The value of K is :")
print(K)
my_result = [index for index in my_list if tuples_product(index) > K]
print("The result is :")
print(my_result)
実行結果
The list is : [(14, 25, 17), (2, 3, 5), (81, 42, 21), (6, 2, 1)] The value of K is : 15 The result is : [(14, 25, 17), (2, 3, 5), (81, 42, 21)]
コードの解説
tuples_productという関数を定義します。この関数はタプルを引数として受け取り、タプル内のすべての要素を掛け合わせた積を返します。関数の外側で、複数のタプルを含むリストを定義し、コンソールに表示します。
しきい値となる変数Kの値を定義し、コンソールに表示します。
リスト内包表記を使ってリストを反復処理し、各タプルに対して
tuples_product関数を呼び出します。関数の戻り値(各タプルの積)をKと比較します。
積がKより大きいタプルのみが新しいリストに追加され、その結果が変数
my_resultに代入されます。最後に、フィルタリングされた結果がコンソールに出力されます。
別の方法:math.prodを使う
Python 3.8以降では、標準ライブラリのmath.prod関数を使うことで、積の計算をさらに簡潔に書くことができます。
import math my_list = [(14, 25, 17), (2, 3, 5), (81, 42, 21), (6, 2, 1)] K = 15 my_result = [index for index in my_list if math.prod(index) > K] print(my_result)
math.prodを利用すれば、自前で積を計算する関数を定義する必要がなくなり、コード全体がすっきりします。
まとめ
タプルの積によるフィルタリングは、「積を計算する関数」と「リスト内包表記」を組み合わせるだけで簡単に実装できます。Python 3.8以降の環境であればmath.prodを使うとより簡潔になるため、用途や環境に応じて使い分けるのがおすすめです。
-
Pythonでタプルのリストを文字列のリストに変換する方法
Pythonでデータ処理を行っていると、要素がタプルになっているリストを扱う場面に遭遇することがあります。さらに、そのタプルを文字列へ変換し、文字列のリストとして取得したいケースも少なくありません。本記事では、タプルのリストを文字列のリストに変換する2つの代表的な方法を、具体的なコード例とともに解説します。方法1:join()とリスト内包表記を使う文字列のjoin()メソッドは、シーケンス(ここではタプル)の各要素を指定した区切り文字で連結し、1つの文字列として返します。区切り文字に空文字列を指定すれば、タプル内の要素をそのまま連結できます。リスト内包表記を使えば、リスト内のすべてのタプルに対
-
Pythonでタプルのリストをリストのリストに変換する方法
Pythonでは、要素がタプルになっているリストを扱うことがあります。その後のデータ処理において、タプルのままでは扱いにくいケースも多く、リスト形式に変換してから処理を行いたい場面が出てきます。この記事では、タプルのリストをリストのリスト(ネストされたリスト)に変換する代表的な2つの方法を、具体的なコード例とともに解説します。方法1:リスト内包表記を使う最もシンプルで直感的なのが、リスト内包表記を使う方法です。forループで各要素(タプル)を1つずつ取り出し、list()関数を適用することで、新しいリストを作成していきます。コード例listA = [(Mon, 3), (Wed, 4), (F