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

Pythonで2つのリストに共通要素が存在するかを判定する方法【初心者向け解説】

この記事では、ユーザーから入力された2つのリストを受け取り、それらの間に共通する要素が少なくとも1つ存在するかどうかを判定するPythonプログラムを紹介します。判定には、最もシンプルな「走査(トラバーサル)」という手法を使用します。具体的には、1つ目のリストと2つ目のリストを順番にたどりながら、各要素同士を比較していきます。

実行例

入力 : A = [10, 20, 30, 50]
       B = [90, 80, 30, 10, 3]
出力 : FOUND(共通要素あり)

入力 : A = [10, 20, 30, 50]
       B = [100, 200, 300, 500]
出力 : NOT FOUND(共通要素なし)

アルゴリズム

commonelement(A, B)
/* A と B はユーザーが入力した2つのリスト */
ステップ1:結果を格納するための変数 c を用意します。
ステップ2:両方のリストを走査し、1つ目のリストの各要素と2つ目のリストの各要素をすべて比較します。
ステップ3:共通要素が見つかった場合は c に「FOUND」を設定し、見つからなければ「NOT FOUND」を返します。

サンプルコード

# Pythonプログラム:2つのリストに
# 少なくとも1つの共通要素があるかを
# リストの走査によって判定する

def commonelement(A, B):
   c = "NOT FOUND"

   # 1つ目のリストを走査
   for i in A:
      # 2つ目のリストを走査
      for j in B:
         # 共通要素があれば
         if i == j:
            c = "FOUND"
            return c
   return c

# ドライバーコード
A = list()
B = list()
n1 = int(input("1つ目のリストのサイズを入力してください ::"))
print("1つ目のリストの要素を入力してください ::")
for i in range(int(n1)):
   k = int(input(""))
   A.append(k)
n2 = int(input("2つ目のリストのサイズを入力してください ::"))
print("2つ目のリストの要素を入力してください ::")
for i in range(int(n2)):
   k = int(input(""))
   B.append(k)

print("実行結果 ::", commonelement(A, B))

実行結果

1つ目のリストのサイズを入力してください ::4
1つ目のリストの要素を入力してください ::
2
1
4
9
2つ目のリストのサイズを入力してください ::5
2つ目のリストの要素を入力してください ::
9
90
4
89
67
実行結果 :: FOUND

1つ目のリストのサイズを入力してください ::4
1つ目のリストの要素を入力してください ::
67
89
45
23
2つ目のリストのサイズを入力してください ::4
2つ目のリストの要素を入力してください ::
1
2
3
4
実行結果 :: NOT FOUND

補足:より効率的な方法について

上記の二重ループによる走査は理解しやすい反面、計算量は O(n×m) となり、リストが大きくなると処理時間が増加します。より効率的に判定したい場合は、set(集合)を活用する方法がおすすめです。例えば set(A) & set(B) のように積集合を求めれば、結果が空でないかどうかを確認するだけで共通要素の有無を O(n+m) の計算量で判定できます。用途やデータサイズに応じて、適切な手法を選択しましょう。

  1. Pythonで2つのリストの共通要素をすべて出力する方法

    2つのリストが与えられたとき、両方のリストに共通して含まれるすべての要素を出力するPythonプログラムを紹介します。この問題は、セット(set)型の集合演算を使うことで、シンプルかつ効率的に解決できます。 実行例 入力 : L1 = [5, 6, 7, 8, 9] L2 = [5, 13, 34, 22, 90] 出力 : {5} 説明 上記の例では、2つのリストのどちらにも存在する要素は「5」だけなので、出力は {5} となります。 アルゴリズム 処理の手順は以下のとおりです。 ステップ1 : ユーザーから入力を受け取り、2つのリストを作成する。 ステップ2 : 各リ

  2. 【初心者向け】Pythonで2つのリストの差分(違い)を抽出する方法を解説

    この記事では、2つのリストが与えられたときに、その差分(違い)を表示するPythonプログラムを紹介します。Pythonにはset()メソッドが用意されており、ここではこのメソッドを活用します。 セット(集合)とは、重複する要素を持たない順序なしのコレクションです。セットオブジェクトは、和集合・積集合・差集合・対称差といった数学的な操作もサポートしているため、リスト同士の比較に非常に便利です。 実行例 入力: A = [10, 15, 20, 25, 30, 35, 40] B = [25, 40, 35] 出力: [10, 20, 30, 15] 考え方 求めたい差分リストは、次のよう