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

リスト(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)の要素数が同じ場合は重複がありません。
使用例
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」を返します。
使用例
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()を使います。
コメント