Pythonでは、重複要素を残すか、順番を維持するかに応じて、リストを結合する方法はいくつかあります。このガイドでは、リストの和集合を効率的に処理するための様々な手法を探ります。
目次
重複要素を含む和集合
すべての要素とその繰り返しを保持して2つのリストを結合する最も簡単な方法は、+
演算子を使用することです。
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = list1 + list2
print(union_list) # 出力: [1, 2, 2, 3, 3, 4, 2]
ソートされた和集合
ソートされた和集合を作成するには、+
演算子とsorted()
関数を組み合わせます。
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = sorted(list1 + list2)
print(union_list) # 出力: [1, 2, 2, 2, 3, 3, 4]
重複要素を含まない和集合
重複要素を含まない和集合を作成するには、集合(set)を使用します。
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_set = set(list1) | set(list2) # または set(list1).union(list2)
union_list = list(union_set) # 必要に応じてリストに変換
print(union_list) # 出力: [1, 2, 3, 4] (順序は異なる場合があります)
集合は自動的に重複要素を削除します。結果のリストの要素の順序は、元のリストとは異なる場合があります。
複数のリストの和集合
2つ以上のリストの場合、集合を使用する方法が効率的です。
list1 = [1, 2, 3]
list2 = [3, 4, 5]
list3 = [5, 6, 1]
union_set = set(list1) | set(list2) | set(list3)
union_list = list(union_set)
print(union_list) # 出力: [1, 2, 3, 4, 5, 6] (順序は異なる場合があります)
#より拡張性の高いreduceを使った解決策:
from functools import reduce
union_list = list(reduce(lambda x,y: x | y, [set(l) for l in [list1, list2, list3]]))
print(union_list) # 出力: [1, 2, 3, 4, 5, 6] (順序は異なる場合があります)
reduce
関数は、多くのリストに対してより簡潔で拡張性の高い解決策を提供します。要素の順序は保持されない可能性があることに注意してください。順序が重要な場合はsorted()
を使用してください。