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

【Python】リストに特定の数字が含まれているかどうかを確認する方法

リスト内のすべての数値が、指定した特定の数字だけで構成されているかどうかを確認したい場面は少なくありません。Pythonでは、文字列操作に便利な join メソッドとシンプルなループ処理を組み合わせることで、この判定を簡単に実装できます。

本記事では、実際のコード例とその動作をわかりやすく解説します。

サンプルコード

以下に、リストが特定の数字のみを含んでいるかを判定する実装例を示します。

my_list = [427, 789, 345, 122, 471, 124]

print("The list is :")
print(my_list)

my_digits = [1, 4, 7, 2]
digit_string = ''.join([str(ele) for ele in my_digits])
all_elems = ''.join([str(ele) for ele in my_list])

my_result = True

for element in all_elems:
   for ele in element:
      if ele not in digit_string:
         my_result = False
         break

if(my_result == True):
   print("The list contains the required digits")
else:
   print("The list doesn't contain the required digits")

実行結果

The list is :
[427, 789, 345, 122, 471, 124]
The list doesn't contain the required digits

この例では、リスト内に「3」「5」「8」「9」など、許可されていない数字が含まれているため、「必要な数字が含まれていない」というメッセージが出力されます。

コードの解説

  • まず、判定対象となる整数のリスト my_list を定義し、コンソールに表示します。
  • 次に、許容する数字のリスト my_digits = [1, 4, 7, 2] を別途定義します。
  • リスト内包表記を使って各要素を文字列に変換し、join メソッドで連結することで、数字リストを1つの文字列 digit_string にまとめます。
  • 同様の処理を元のリストにも適用し、すべての桁を連結した文字列を all_elems として保存します。
  • 判定結果を格納する変数 my_resultTrue で初期化します。
  • all_elems の各文字を順番に走査し、digit_string に存在しない文字が1つでも見つかった場合は、my_resultFalse に設定してループを中断します。
  • 最後に、my_resultTrue であれば「必要な数字がすべて含まれている」旨のメッセージを、そうでなければ「含まれていない」旨のメッセージを出力します。

補足:より簡潔に書く方法

上記のコードはネストしたループを使用していますが、all() 関数と set() を使うことで、より簡潔に記述することも可能です。

my_list = [427, 789, 345, 122, 471, 124]
my_digits = [1, 4, 7, 2]

digit_set = set(map(str, my_digits))
my_result = all(char in digit_set for char in ''.join(map(str, my_list)))

print(my_result)  # False

all() 関数は、イテラブル内のすべての要素が真であるかどうかを一括で判定できるため、フラグ変数の管理が不要になり、コードの意図も明確になります。用途に応じて使い分けるとよいでしょう。

  1. Pythonでネストされたリストの中に特定のリストが存在するか確認する方法

    Pythonでは、リストをネスト(入れ子)にすることができます。つまり、リストの要素そのものがリストであるケースです。本記事では、ある特定のリストが、外側のより大きなリストの要素として存在するかどうかを判定する方法を解説します。方法1:in演算子を使う最もシンプルで直感的な方法は、in 演算子を使うことです。内側のリストが、外側のリストの要素として含まれているかどうかを直接チェックできます。コード例listA = [[-9, -1, 3], [11, -8], [-4, 434, 0]] search_list = [-4, 434, 0] # 元のリストを表示 print(Given Li

  2. 【Python】リスト内のすべての要素が同じ値かどうかを確認する3つの方法

    リスト内の要素がすべて同じ値であるかどうかを確認したい場面はよくあります。たとえば、データの整合性チェックやバリデーション処理などで必要になることがあります。Pythonでは、このような判定をいくつかの方法で実装できます。本記事では、代表的な3つのアプローチをサンプルコードとともにわかりやすく解説します。1. forループを使う方法まずリストの先頭要素を取得し、forループで各要素を順番に先頭要素と比較していきます。途中で一致しない要素が見つかった時点でループを抜け、結果をFalseにするのがポイントです。サンプルコードList = [Mon, Mon, Mon, Mon] result =