Pythonで2つのリストの共通要素をすべて出力する方法
2つのリストが与えられたとき、両方のリストに共通して含まれるすべての要素を出力するPythonプログラムを紹介します。この問題は、セット(set)型の集合演算を使うことで、シンプルかつ効率的に解決できます。
実行例
入力 : L1 = [5, 6, 7, 8, 9]
L2 = [5, 13, 34, 22, 90]
出力 : {5}
説明
上記の例では、2つのリストのどちらにも存在する要素は「5」だけなので、出力は {5} となります。
アルゴリズム
処理の手順は以下のとおりです。
ステップ1 : ユーザーから入力を受け取り、2つのリストを作成する。
ステップ2 : 各リストをセット(set)に変換し、set1 & set2 の結果を出力する。
ステップ3 : set1 & set2 は、両方のセットに共通する要素のみを含む新しいセットを返す。
(set1 はリスト1、set2 はリスト2 から変換されたもの)
サンプルコード
# 2つのリストの共通要素を見つけるPythonプログラム
def commonelemnets(a, b):
seta = set(a)
setb = set(b)
if (seta & setb):
print("共通要素 ::>", seta & setb)
else:
print("共通する要素はありません")
A = list()
n = int(input("1つ目のリストのサイズを入力してください ::"))
print("1つ目のリストの要素を入力してください ::")
for i in range(int(n)):
k = int(input(""))
A.append(k)
B = list()
n = int(input("2つ目のリストのサイズを入力してください ::"))
print("2つ目のリストの要素を入力してください ::")
for i in range(int(n)):
k = int(input(""))
B.append(k)
commonelemnets(A, B)
実行結果
1つ目のリストのサイズを入力してください :: 4
1つ目のリストの要素を入力してください ::
4
5
6
7
2つ目のリストのサイズを入力してください :: 4
2つ目のリストの要素を入力してください ::
1
2
3
4
共通要素 ::> {4}
1つ目のリストのサイズを入力してください :: 4
1つ目のリストの要素を入力してください ::
1
2
3
4
2つ目のリストのサイズを入力してください :: 4
2つ目のリストの要素を入力してください ::
5
6
7
8
共通する要素はありません
ポイント解説
このプログラムの核となるのは、セットのAND演算子「&」(積集合)です。リストをセットに変換することで、重複した要素が自動的に除去され、さらに「&」演算子を使うことで、両方のリストに共通する要素だけを簡単に抽出できます。
なお、共通要素が1つも存在しない場合は空のセットが返されるため、if文でその判定を行い、「共通する要素はありません」というメッセージを表示するようにしています。
-
3つのソート済み配列から共通要素を見つけるPythonプログラムの書き方
この記事では、Pythonを使って3つのソート済み配列(リスト)に共通して含まれる要素を効率的に見つける方法を解説します。 基本的な流れは以下のとおりです。まず、ユーザーが入力した3つの未ソートのリストを用意し、それぞれをsorted()関数で昇順に並べ替えます。その後、各リストの先頭から同時に走査を行い、3つのリストの現在位置にある要素がすべて一致するかどうかを確認します。一致していればその要素を出力し、一致していなければ最も小さい値を持つインデックスを進めて次の要素へ移動します。 処理の概要 配列のサイズをそれぞれ n1、n2、n3 とし、各配列の走査位置を示すインデックスを i = 0、
-
Pythonでリスト内のすべての数値を乗算するプログラムの書き方
この記事では、Pythonを使ってリスト内のすべての数値を掛け合わせる(乗算する)方法を解説します。まず、ユーザーからの入力を受け取るためのリストを3つ作成し、ここでは「走査(トラバース)」という手法を利用します。 基本的な考え方はシンプルです。積を表す変数の初期値を 1 に設定し、リストの先頭から末尾まで要素を順にたどりながら、各数値をひとつずつ積に掛けていきます。すべての要素を処理し終えた時点で、変数にはリスト全体の積が格納されています。 実行例 入力: A=[5,6,3] 出力: 90 説明: 5×6×3 アルゴリズム ステップ1: すべての数値をリスト(lst)に入力する。 ステ