Python リスト内の重複要素を削除

Document 对象参考手册Python3 実例

この章では、リストから重複要素を削除する方法を学びます。

知識ポイントは以下のとおりです。

  • Python 集合:集合(set)は、順序のない重複しない要素のシーケンスです。

  • Python リスト:リストは、データ項目から構成される有限のシーケンスであり、一定の線形順序に従って配置されたデータ項目の集合です。このデータ構造に対する基本操作には、要素の検索、挿入、削除が含まれます。

実例

list_1 = [1, 2, 1, 4, 6]

print(list(set(list_1)))

上記のコードを実行すると、出力結果は次のようになります。

[1, 2, 4, 6]

上記の実例では、まずリストを集合に変換し、再度リストに変換しています。集合には重複要素を含めることができないため、set() が重複要素を削除します。

元のリストの要素の順序を保持する必要がある場合は、補助集合を使用してすでに出現した要素を追跡し、新しいリストを構築することができます。

実例

# 補助集合を使用して順序を保ちながら重複を除去
def remove_duplicates(lst):
    seen = set()
    unique_list = []
    for item in lst:
        if item not in seen:
            seen.add(item)
            unique_list.append(item)
    return unique_list

# 例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list)  # 出力: [1, 2, 3, 4, 5]

dict.fromkeys() を使用

dict.fromkeys() メソッドは、重複を除去し順序を保持するためにも使用できます。これは、辞書が Python 3.7 以降で挿入順序を保持するためです。

実例

# dict.fromkeys() を使用して順序を保ちながら重複を除去
def remove_duplicates(lst):
    return list(dict.fromkeys(lst))

# 例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list)  # 出力: [1, 2, 3, 4, 5]

上記のコードを実行すると、出力結果は次のようになります。

[1, 2, 3, 4, 5]

リスト内包表記を使用

リスト内包表記に条件判断を組み合わせることで、重複除去機能を実現することもできます。

実例

# リスト内包表記を使用して重複を除去
def remove_duplicates(lst):
    unique_list = []
    [unique_list.append(item) for item in lst if item not in unique_list]
    return unique_list

# 例
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list)  # 出力: [1, 2, 3, 4, 5]

2つのリストで重複する要素を削除

以下の実例では、2つのリストに同時に存在する要素が削除されます。

実例

list_1 = [1, 2, 1, 4, 6]
list_2 = [7, 8, 2, 1]

print(list(set(list_1) ^ set(list_2)))

まず、set() を使用して2つのリストを2つの集合に変換し、リスト内の重複要素を削除します。

次に、^演算子を使用して、2つのリストの対称差を取得します。

上記のコードを実行すると、出力結果は次のようになります。

[4, 6, 7, 8]

まず、2つのリストを2つの集合に変換して、各リストから重複項目を削除します。

次に、^を使用して、2つのリストの対称差(2つの集合の重複要素を除外したもの)を取得します。

Document 对象参考手册Python3 実例

その他の拡張