Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリスト内の全要素がユニーク(重複なし)かどうかを判定する方法

Pythonでは、数値のリスト nums が与えられたとき、そのすべての要素が一意(重複していない)かどうかを簡単に確認できます。

例えば、nums = [2, 3, 6, 5, 1, 8] の場合、すべての要素が異なるため、結果は True になります。

解決の手順

  • リスト l のサイズを n として取得します
  • 空のセット(集合)s を作成します
  • i を 0 から n-1 までループさせながら、sl[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) で行えるため、リスト全体を一度走査するだけで効率的に判定できます。大量のデータを扱う場合でも、このアプローチなら十分なパフォーマンスが期待できるでしょう。

  1. Pythonでリスト内の一意な要素をカウントする方法

    Pythonのリストには、同じ要素が複数含まれていることがあります。len()関数でリストの長さを取得すると、重複した要素も含めた全体の長さが返されます。しかし、場合によっては重複を除いた「一意な要素(ユニークな要素)」の数だけを知りたいこともあるでしょう。この記事では、collectionsモジュールのCounterクラスを使って、リスト内の個別の要素数を取得する方法を解説します。CounterクラスとはcollectionsモジュールのCounterは、ハッシュ可能なオブジェクトをカウントするためのdictのサブクラスです。要素が辞書のキーとして格納され、その出現回数が辞書の値として保存さ

  2. Pythonで整数配列の重複を除去し、個別の要素だけを出力する方法

    整数型の配列が与えられ、その中には重複した要素が含まれている場合があります。この記事では、重複を取り除いて個別(ユニーク)な値だけを出力するPythonプログラムを解説します。 実行例 入力:A = [1, 2, 3, 4, 2, 3, 5, 6] 出力:[1, 2, 3, 4, 5, 6] アルゴリズム このプログラムは次の手順で動作します。 配列の要素を入力として受け取ります。 各要素を先頭から順番に1つずつ取り出します。 取り出した要素が、それ以前にすでに出力されたものかどうかを確認します。 初期値0のフラグ変数を用意し、すでに表示済みなら1、未表示なら0のままにします。 フラ