チュートリアル

Python で 2 つのリストを比較する方法

著者 7分で読めます

Python では 2 つのリストを比較して差分・共通要素・一意要素を見つけることがよくあります。ここでは、目的に応じて使い分けられる実用的な方法を順に解説します。


1. set を使う(最速・最簡潔)

順序や重複を気にしない場合に最適です。

list_a = [1, 2, 3, 4, 5]
list_b = [4, 5, 6, 7, 8]

set_a = set(list_a)
set_b = set(list_b)

common = set_a & set_b        # 交差
only_a = set_a - set_b         # A のみ
only_b = set_b - set_a         # B のみ
symm   = set_a ^ set_b         # 対称差

長所: 大規模データでも高速・簡潔。短所: 順序と重複は失われます。


2. リスト内包表記(順序・重複を保持)

list_a = [1, 2, 3, 4, 5, 5]
list_b = [4, 5, 6, 7, 8]

only_a = [x for x in list_a if x not in list_b]  # [1, 2, 3]
common  = [x for x in list_a if x in list_b]     # [4, 5, 5]

性能向上: list_b を先に set にしてから in を使うと高速です。

set_b = set(list_b)
common = [x for x in list_a if x in set_b]

3. for ループ(初心者にやさしい)

only_a = []
for x in list_a:
    if x not in list_b:
        only_a.append(x)

4. collections.Counter(出現回数で比較)

from collections import Counter

ca = Counter(['a', 'b', 'b', 'c'])
cb = Counter(['b', 'c', 'd', 'e'])

common = list((ca & cb).elements())  # ['b', 'c']
only_a = list((ca - cb).elements())  # ['a', 'b']

長所: 頻度の比較が簡単。短所: 元の順序は保持されません。


まとめ

方法 長所 短所 向いている用途
set 最速・簡潔 順序/重複なし 交差・差集合・対称差
リスト内包 順序/重複を保持 大規模で遅い(set 併用推奨) 条件付き抽出、順序保持
for ループ 拡張しやすい 冗長 初心者/複雑な条件
Counter 頻度比較が容易 順序なし 出現回数の差を比較

メンバーシップ確認だけなら、対象側を set にしてから判定すると高速です。

タグ

#Python#リスト比較#チュートリアル

著者について

songshiqiang個人開発者

AI ツールを使って面白いウェブサイトを開発しています。

関連記事

チュートリアル

Instagram で誰がフォローを外したかを確認する方法

公式データエクスポートとオンライン比較ツールで、安全に“フォローバックなし”を見つける。

6分で読めます
#Instagram#フォロワー#リスト比較#チュートリアル
続きを読む
チュートリアル

Excel で 2 つのリストを比較する方法

条件付き書式、VLOOKUP、COUNTIF、詳細フィルター、Power Query、配列数式の6つの実用的な手法を解説。

8分で読めます
#Excel#リスト比較#チュートリアル
続きを読む
チュートリアル

Excelでドロップダウンリストを作成する方法

詳細チュートリアル:基礎から応用まで、動的ドロップダウンリストと多段階連動オプションを作成し、データ入力をより効率的で正確にする方法を学ぶ。

8分で読める
#Excel#ドロップダウンリスト#データ検証#チュートリアル
続きを読む