パイソン |リストから一意の値を取得する

この記事では、指定されたリストから個別の要素を効率的に抽出するためのさまざまな手法と戦略を検討します。従来のループから最新の Python アプローチに至るまでのメソッドを掘り下げることで、 パイソン。

  Input : [  1,2, 1, 1, 3, 4, 3, 3, 5 ]   Output :   [1, 2, 3, 4, 5]    Explaination:   The output only contains the unique element from the input list. 

リストから一意の値を取得する

この記事で取り上げるトピックは次のとおりです。

  • の横断 リスト
  • 使用する セット 方法
  • 使用する reduce()関数
  • 使用する 演算子.countOf() 方法
  • 使用する パンダモジュール
  • 使用する numpy.unique
  • 使用する コレクション.Counter()
  • 使用する dict.fromkeys()

リストから一意の値を取得する リストの走査によって

トラバーサルを使用すると、リスト内のすべての要素をトラバースし、その要素が unique_list に既にあるかどうかを確認し、そこに存在しない場合は、その要素を unique_list に追加できます。これは 1 つを使用して行われます for ループ もう 1 つの if ステートメントは、値が一意のリストにあるかどうかをチェックします。これは、別の for ループと同等です。

Python3




# function to get unique values> def> unique(list1):> > # initialize a null list> > unique_list> => []> > # traverse for all elements> > for> x> in> list1:> > # check if exists in unique_list or not> > if> x> not> in> unique_list:> > unique_list.append(x)> > # print list> > for> x> in> unique_list:> > print> x,> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

出力

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

時間計算量: O(n*n)
補助スペース: の上)

リストから一意の値を取得する Set メソッドの使用

使用する セット() Python のプロパティを使用すると、一意の値を簡単に確認できます。リストの値をセットに挿入します。 Set は、値が複数回挿入された場合でも、値を 1 回だけ保存します。 list_set=set(list1) によってセット内のすべての値を挿入した後、このセットをリストに変換して出力します。

Python3




def> unique(list1):> > # insert the list to the set> > list_set> => set> (list1)> > # convert the set to the list> > unique_list> => (> list> (list_set))> > for> x> in> unique_list:> > print> x,> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

出力

the unique values from 1st list is 40 10 20 30 the unique values from 2nd list is 1 2 3 4 5 

時間計算量: O(n)。n はリストの長さです。
補助スペース: O(n)。n はリストの長さです。

Pythonでreduce()関数を使用してリストから一意の値を取得する

Pythonインポートの使用 減らす() functools からすべての要素を反復処理し、要素が重複値または一意の値であるかどうかを確認します。以下は、上記のアプローチの実装です。

Python3




from> functools> import> reduce> def> unique(list1):> > # Print directly by using * symbol> > ans> => reduce> (> lambda> re, x: re> +> [x]> if> x> not> in> re> else> re, list1, [])> > print> (ans)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

出力

the unique values from 1st list is [10, 20, 30, 40] the unique values from 2nd list is [1, 2, 3, 4, 5] 

Operator.countOf() メソッドを使用して Python のリストから一意の値を取得する

「unique」関数は空の「unique_list」を初期化し、「list1」を反復処理します。各要素「x」に対して、「 op.countOf() ' 'unique_list' に 'x' が存在するかどうかを確認します。見つからない場合 (カウントが 0 の場合)、「unique_list」に「x」が追加されます。最終的な一意の値は、 ループ 。ドライバー コードは、2 つのリスト「list1」と「list2」に対するこのプロセスを示し、元の順序を維持しながら各リストから個別の要素を抽出する様子を示しています。

Python3




import> operator as op> # function to get unique values> def> unique(list1):> > # initialize a null list> > unique_list> => []> > # traverse for all elements> > for> x> in> list1:> > # check if exists in unique_list or not> > if> op.countOf(unique_list, x)> => => 0> :> > unique_list.append(x)> > # print list> > for> x> in> unique_list:> > print> (x)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

出力

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

時間計算量:O(N)
補助スペース:O(N)

pandas モジュールを使用して Python のリストから一意の値を取得する

「ユニークな」機能は、 パンダ 「list1」からシリーズを作成し、「drop_duplicates()」を使用して重複を削除し、一意の値のリストを取得します。その後、一意のリストを反復処理し、各要素を出力します。ドライバー コードは、2 つのリスト「list1」と「list2」のプロセスを示し、各リストに個別の値を提供します。

Python3




import> pandas as pd> # function to get unique values> def> unique(list1):> > unique_list> => pd.Series(list1).drop_duplicates().tolist()> > for> x> in> unique_list:> > print> (x)> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)> #This code is contributed by Vinay Pinjala.>

出力:

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

時間計算量:O(N)
補助スペース:O(N)

リストから一意の値を取得する numpy.unique の使用

Pythonのインポートを使用する しこり 、配列内の固有の要素も取得されます。最初のステップでリストを次のように変換します x=numpy.array(リスト) そして使用します numpy.unique(x) リストから一意の値を取得する関数。 numpy.unique() リスト内の一意の値のみを返します。

Python3




# using numpy.unique> import> numpy as np> def> unique(list1):> > x> => np.array(list1)> > print> (np.unique(x))> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

出力:

the unique values from 1st list is [10 20 30 40] the unique values from 2nd list is [1 2 3 4 5] 

時間計算量: O(nlogn) は、numpy.unique() 関数で使用される並べ替えアルゴリズムの使用によるものです。
補助スペース: O(n) は、numpy.unique() 関数が入力配列のコピーを作成し、一意の要素を返す前にそれを並べ替えるためです。

collections.Counter() を使用して Python でリストから一意の値を取得する

Python を使用して Counter() をインポートする コレクション Counter 要素のすべてのキーを出力するか、 * シンボル。以下は、上記のアプローチの実装です。

Python3




from> collections> import> Counter> # Function to get unique values> def> unique(list1):> > # Print directly by using * symbol> > print> (> *> Counter(list1))> # driver code> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> print> (> 'the unique values from 1st list is'> )> unique(list1)> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> print> (> ' the unique values from 2nd list is'> )> unique(list2)>

出力

the unique values from 1st list is 10 20 30 40 the unique values from 2nd list is 1 2 3 4 5 

時間計算量: O(n) ここで、n は入力リスト内の要素の数です。
補助スペース : O(n)

dict.fromkeys() を使用してリストから一意の値を取得する

を使用して、 fromkeys() 辞書データ構造のメソッドを使用して、一意の要素を取得できます。まず、重複した要素で構成されるリストを定義する必要があります。次に、fromkeys() メソッドを使用した後に結果を格納する変数を使用する必要があります。 fromkeys() メソッドは辞書の一部であるため、その結果をリストに変換します。デフォルトでは、すべての一意のキーとその値として None を含む辞書を返します。

Python3




# defining a list which consists duplicate values> list1> => [> 10> ,> 20> ,> 10> ,> 30> ,> 40> ,> 40> ]> list2> => [> 1> ,> 2> ,> 1> ,> 1> ,> 3> ,> 4> ,> 3> ,> 3> ,> 5> ]> # storing the result of the fromkeys()> # operation and converting it into list> unique_list_1> => list> (> dict> .fromkeys(list1))> unique_list_2> => list> (> dict> .fromkeys(list2))> # Printing the final result> print> (unique_list_1,unique_list_2,sep> => ' '> )>

出力

[10, 20, 30, 40] [1, 2, 3, 4, 5] 

時間計算量 – O(n)
空間の複雑さ – O(n)