リストに重複が含まれているかどうかを確認する方法はありますか?例えば:
list1 = [1,2,3,4,5]
list2 = [1,1,2,3,4,5]
list1.*method* = False # no duplicates
list2.*method* = True # contains duplicates
リストに重複が含まれているかどうかを確認する方法はありますか?例えば:
list1 = [1,2,3,4,5]
list2 = [1,1,2,3,4,5]
list1.*method* = False # no duplicates
list2.*method* = True # contains duplicates
リストを一時的にセットに変換すると、セット内の重複がなくなります。次に、リストとセットの長さを比較できます。
コードでは、次のようになります。
list1 = [...]
tmpSet = set(list1)
haveDuplicates = len(list1) != len(tmpSet)
リストをセットに変換して、重複を削除します。元のリストとセットの長さを比較して、重複が存在するかどうかを確認します。
>>> list1 = [1,2,3,4,5]
>>> list2 = [1,1,2,3,4,5]
>>> len(list1) == len(set(list1))
True # no duplicates
>>> len(list2) == len(set(list2))
False # duplicates
元のリストの長さが、リスト内の要素の一意の「セット」の長さよりも大きいかどうかを確認してください。もしそうなら、重複があったに違いありません
list1 = [1,2,3,4,5]
list2 = [1,1,2,3,4,5]
if len(list1) != len(set(list1)):
#duplicates
このset()
アプローチはハッシュ可能なオブジェクトに対してのみ機能するため、完全を期すために、単純な反復でそれを行うことができます。
import itertools
def has_duplicates(iterable):
"""
>>> has_duplicates([1,2,3])
False
>>> has_duplicates([1, 2, 1])
True
>>> has_duplicates([[1,1], [3,2], [4,3]])
False
>>> has_duplicates([[1,1], [3,2], [4,3], [4,3]])
True
"""
return any(x == y for x, y in itertools.combinations(iterable, 2))