Python – すべての要素が同じタプルをフィルタリングして抽出する方法
Pythonでは、リスト内包表記と「set」関数、「len」関数を組み合わせることで、すべての要素が同一であるタプルだけを簡単に抽出できます。この記事では、その具体的な実装方法をサンプルコードとともに解説します。
サンプルコード
以下に、すべての要素が同じタプルを抽出するデモを示します。
my_list = [(31, 54, 45, 11, 99) , (11,11), (45, 45, 45), (31, 54, 45, 11, 99),(99, 99), (0,0)]
print("The list is : " )
print(my_list)
my_result = [sub_list for sub_list in my_list if len(set(sub_list)) == 1]
print("The resultant list is :")
print(my_result)
出力結果
The list is : [(31, 54, 45, 11, 99), (11, 11), (45, 45, 45), (31, 54, 45, 11, 99), (99, 99), (0, 0)] The resultant list is : [(11, 11), (45, 45, 45), (99, 99), (0, 0)]
処理の流れと解説
まず、複数のタプルを含むリストを定義し、コンソールに表示します。
リスト内包表記を使用して、リスト内の各タプルを順番に処理していきます。
各タプルに対して「
set」関数を適用し、その長さが「1」と等しいかどうかを条件として判定します。setは重複する要素を自動的に削除するため、すべての要素が同じタプルの場合、変換後の長さは必ず1になります。条件を満たすタプルのみが新しいリストに格納されます。
この結果のリストを変数に代入し、最後にコンソールへ出力します。
別のアプローチ:all() 関数を使う方法
setを使わずに、「all()」関数を利用して同様の処理を行うこともできます。すべての要素が先頭の要素と一致しているかを確認する方法です。
my_result = [sub_list for sub_list in my_list if all(x == sub_list[0] for x in sub_list)] print(my_result)
どちらの方法でも結果は同じですが、setを使う方法の方がコードが簡潔で読みやすいのが特徴です。データの前処理やクリーニングの場面で役立つテクニックなので、ぜひ覚えておきましょう。
-
【Python】リスト内のすべての要素が同じ値かどうかを確認する3つの方法
リスト内の要素がすべて同じ値であるかどうかを確認したい場面はよくあります。たとえば、データの整合性チェックやバリデーション処理などで必要になることがあります。Pythonでは、このような判定をいくつかの方法で実装できます。本記事では、代表的な3つのアプローチをサンプルコードとともにわかりやすく解説します。1. forループを使う方法まずリストの先頭要素を取得し、forループで各要素を順番に先頭要素と比較していきます。途中で一致しない要素が見つかった時点でループを抜け、結果をFalseにするのがポイントです。サンプルコードList = [Mon, Mon, Mon, Mon] result =
-
Pythonのタプルに要素を追加する方法【リスト変換と連結のテクニック】
Pythonのタプルは変更不可(イミュータブル)なオブジェクト Pythonのタプル(tuple)はイミュータブル(変更不可)なオブジェクトです。そのため、append()のような要素を追加・変更しようとする操作は許されず、直接実行するとエラーが発生します。 しかし、一度タプルをリストに変換して操作した後、再びタプルへ戻すという方法を使えば、結果的に「タプルへ要素を追加した状態」を実現できます。 タプルへの要素追加の手順 具体的には、以下の2つの組み込み関数を使用します。 list(): タプルをリストに変換する tuple(): リストをタプルに変換する まず list() 関数でタプ