2

リストに重複が含まれているかどうかを確認する方法はありますか?例えば:

list1 = [1,2,3,4,5]
list2 = [1,1,2,3,4,5]

list1.*method* = False # no duplicates
list2.*method* = True # contains duplicates
4

4 に答える 4

14

リストを一時的にセットに変換すると、セット内の重複がなくなります。次に、リストとセットの長さを比較できます。

コードでは、次のようになります。

list1 = [...]
tmpSet = set(list1)
haveDuplicates = len(list1) != len(tmpSet)
于 2012-06-28T17:27:33.917 に答える
2

リストをセットに変換して、重複を削除します。元のリストとセットの長さを比較して、重複が存在するかどうかを確認します。

>>> 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
于 2012-06-28T17:27:54.470 に答える
2

元のリストの長さが、リスト内の要素の一意の「セット」の長さよりも大きいかどうかを確認してください。もしそうなら、重複があったに違いありません

list1 = [1,2,3,4,5]
list2 = [1,1,2,3,4,5]

if len(list1) != len(set(list1)):
    #duplicates
于 2012-06-28T17:28:08.797 に答える
0

この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))
于 2012-06-28T17:43:57.823 に答える