Pythonで特定の数字のみを含む要素をリストから抽出する方法
リストの中から、特定の数字だけで構成されている数値だけを抽出したいケースはよくあります。そんなときに便利なのが、リスト内包表記とall() 関数を組み合わせた方法です。この記事では、その具体的な実装例と動作の仕組みをわかりやすく解説します。
サンプルコード
my_list = [3345, 2345, 1698, 2475, 1932]
print("The list is :")
print(my_list)
digit_list = [2, 3, 5, 4]
my_result = [index for index in my_list if all(int(element) in digit_list for element in str(index))]
print("The result is :")
print(my_result)実行結果
The list is : [3345, 2345, 1698, 2475, 1932] The result is : [3345, 2345]
コードの解説
まず、対象となる整数のリスト
my_listを定義し、コンソールに表示します。次に、抽出条件となる数字のリスト
digit_listを定義します。この例では[2, 3, 5, 4]を指定しており、これらの数字だけで構成される数値のみが抽出対象になります。リスト内包表記を使って
my_listの各要素を順番に取り出し、str()関数で文字列に変換します。数値を文字列化することで、1桁ずつ個別に扱えるようになります。各桁に対して
int()で再び整数に戻し、その数字がdigit_listに含まれているかどうかを確認します。all()関数により、すべての桁がdigit_listに含まれる場合のみTrueとなり、その要素が結果のリストに追加されます。最終的な結果は変数
my_resultに格納され、コンソールに出力されます。
この手法のポイント
この方法の核心は、数値を一度文字列に変換することで「桁」を簡単に走査できる点にあります。また、all() はイテラブル内のすべての要素が真である場合に True を返すため、「すべての桁が条件を満たしているか」という判定を1行で簡潔に記述できます。
たとえば上記の例では、3345 と 2345 は使用できる数字(2, 3, 5, 4)だけで構成されているため抽出されましたが、1698 や 1932 には条件外の数字(1, 6, 8, 9)が含まれているため除外されています。
条件となる数字リストを変更すれば、さまざまなフィルタリング要件に柔軟に対応できる汎用性の高いテクニックです。
-
Pythonでリストから重複する要素を抽出して表示する方法
この記事では、数値のリストの中から重複している要素(2回以上出現する、リスト内で一意ではない要素)をすべて抽出して表示するPythonプログラムを解説します。実行例入力: given_list = [3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12] 出力: desired_output = [3, 9, 12] 入力: given_list = [-27, 4, 29, -27, -2, -99, 123, 499, -99] 出力: desired_output = [-27, -99]負の数値が含まれる場合でも正しく動作することがわかります。重複要素を検出する
-
【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法
リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう