[Python]リスト(List)に重複があるかどうか判定するには?

python

どうも、ちょげ(@chogetarou)です。

リスト(List)に重複があるかどうかを判定する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リストに重複があるかどうか判定する方法は、2つあります。

set()

1つは、set()を使う方法です。

具体的には、リストとset()でセットに変換したリストの要素数を比較します。

len(list) != len(set(list))

リストとセットに変換したリストの要素数が違う場合は重複があります。

逆に、リストとセットに変換したリストの要素数が同じ場合は重複がありません。

リストをセットに変換すると、重複する要素は全て削除されます。

なので、セットに変換した後、要素数が減ったかどうかを調べれば、重複を判定できます。

len()は、引数に指定されたリストの要素数を返す関数です。

使用例

numbers = [3, 5, 1, 2, 4, 1]

if len(numbers) != len(set(numbers)):
    print('重複があります')
else:
    print('重複はありません')

any() + count()

もう1つは、any()とcount()を使う方法です。

まず、any()を呼び出し、anyの引数にリストをfor-inループを記述します。

そして、for-inループの前に、リストのcount()が1より大きいかどうかを調べる条件式を記述します。

count()の引数には、for-in文で取得した要素を指定します。

any(list.count(i) > 1 for i in list)

上記のany()は、リストに重複がある場合は「True」、重複がなければ「False」を返します。

上記の処理では、リストをループして、リスト内に個数が2つ以上の要素があるかどうかを調べています。

使用例

numbers = [3, 5, 1, 2, 4, 4]

if any(numbers.count(i) > 1 for i in numbers):
    print('重複があります')
else:
    print('重複はありません')

スポンサーリンク

まとめ

リスト(List)に重複があるかどうかを判定する方法は、次の2つです。

  • set()関数を使う方法
  • any()とcount()を使う方法

コメント

タイトルとURLをコピーしました