[Python]配列(Array)の重複チェックをするには?

python

配列(Array)に重複があるかどうかを判定する方法を紹介します。

スポンサーリンク

方法

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

リスト(list)とArray.array

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

set()

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

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

len(array) != len(set(array))

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

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

リスト(もしくはArray.array)をセットに変換すると、重複する要素は全て削除されます。

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

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

使用例

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

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

any() + count()

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

まず、any()を呼び出し、anyの引数にリスト(もしくはArray.array)をforループを記述します。

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

count()の引数には、forループで取得した要素を指定します。

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

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

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

使用例

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

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

Numpy配列

Numpy配列(Array)に重複があるかどうか判定するには、sizeとnumpyのunique()を使います。

まず、numpyからunique()を呼び出します。

unique()の引数には、Numpy配列を指定します。

そして、unique()の戻り値のsizeとNumpy配列のsizeを比較します。

numpy.unique(array).size != array.size

unique()の戻り値のsizeとNumpy配列のsizeが同じであれば重複はありません。

逆に、unique()の戻り値のsizeとNumpy配列のsizeが違えば重複があります。

使用例

import numpy as np

numbers = np.array([1, 2, 3, 4, 4])

if np.unique(nums).size != nums.size:
    print('重複があります')
else:
    print('重複はありません')

まとめ

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

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

Numpy配列に重複があるかどうかを判定するには、sizeとnumpy.unique()を使います。

コメント

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