Pythonでリスト内の全要素がユニーク(重複なし)かどうかを判定する方法
Pythonでは、数値のリスト nums が与えられたとき、そのすべての要素が一意(重複していない)かどうかを簡単に確認できます。
例えば、nums = [2, 3, 6, 5, 1, 8] の場合、すべての要素が異なるため、結果は True になります。
解決の手順
- リスト
lのサイズをnとして取得します - 空のセット(集合)
sを作成します iを 0 から n-1 までループさせながら、sにl[i]を追加していきます- 最後に、
sのサイズがlのサイズと一致すればTrue、一致しなければFalseを返します
実装例
def solve(l):
n = len(l)
s = set()
for i in range(0, n):
s.add(l[i])
return (len(s) == len(l))
l = [2, 3, 6, 5, 1, 8]
print(solve(l))
入力
[2, 3, 6, 5, 1, 8]
出力
True
より簡潔な書き方
Pythonでは、リストを直接 set() に変換することで、上記のコードをさらにシンプルにできます。セットは重複する要素を持たないため、変換後のサイズが元のリストと同じであれば、すべての要素が一意であることがわかります。
def solve(l):
return len(set(l)) == len(l)
l = [2, 3, 6, 5, 1, 8]
print(solve(l)) # True
計算量について
この方法の時間計算量は O(n)、空間計算量も O(n) です。セットへの要素追加は平均 O(1) で行えるため、リスト全体を一度走査するだけで効率的に判定できます。大量のデータを扱う場合でも、このアプローチなら十分なパフォーマンスが期待できるでしょう。
-
Pythonでリスト内の一意な要素をカウントする方法
Pythonのリストには、同じ要素が複数含まれていることがあります。len()関数でリストの長さを取得すると、重複した要素も含めた全体の長さが返されます。しかし、場合によっては重複を除いた「一意な要素(ユニークな要素)」の数だけを知りたいこともあるでしょう。この記事では、collectionsモジュールのCounterクラスを使って、リスト内の個別の要素数を取得する方法を解説します。CounterクラスとはcollectionsモジュールのCounterは、ハッシュ可能なオブジェクトをカウントするためのdictのサブクラスです。要素が辞書のキーとして格納され、その出現回数が辞書の値として保存さ
-
Pythonで整数配列の重複を除去し、個別の要素だけを出力する方法
整数型の配列が与えられ、その中には重複した要素が含まれている場合があります。この記事では、重複を取り除いて個別(ユニーク)な値だけを出力するPythonプログラムを解説します。 実行例 入力:A = [1, 2, 3, 4, 2, 3, 5, 6] 出力:[1, 2, 3, 4, 5, 6] アルゴリズム このプログラムは次の手順で動作します。 配列の要素を入力として受け取ります。 各要素を先頭から順番に1つずつ取り出します。 取り出した要素が、それ以前にすでに出力されたものかどうかを確認します。 初期値0のフラグ変数を用意し、すでに表示済みなら1、未表示なら0のままにします。 フラ