Python
 Computer >> コンピューター >  >> プログラミング >> Python

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行で簡潔に記述できます。

たとえば上記の例では、33452345 は使用できる数字(2, 3, 5, 4)だけで構成されているため抽出されましたが、16981932 には条件外の数字(1, 6, 8, 9)が含まれているため除外されています。

条件となる数字リストを変更すれば、さまざまなフィルタリング要件に柔軟に対応できる汎用性の高いテクニックです。

  1. 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]負の数値が含まれる場合でも正しく動作することがわかります。重複要素を検出する

  2. 【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法

    リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう