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

Pythonでリストから一意の値(重複しない要素)を抽出する3つの方法

Pythonのリストは、[](角括弧)の中に複数の要素を格納できるデータ構造です。異なるデータ型を混在させることもでき、重複した値を含むこともあります。本記事では、リストから重複を除いた一意の値だけを取り出す方法を、代表的な3つのアプローチに分けて解説します。

方法1:append() と not in を使う方法

まず空の新しいリストを作成し、元のリストの要素を1つずつ確認しながら、まだ新しいリストに存在しない場合のみ追加していく方法です。forループと not in 条件を組み合わせることで、要素の存在チェックを行い、未登録の要素だけを追加できます。

コード例

def catch_unique(list_in):
    # 空のリストを初期化
    unq_list = []

    # 要素を順にチェック
    for x in list_in:
        # unq_list に存在するか確認
        if x not in unq_list:
            unq_list.append(x)
    # リストを出力
    for x in unq_list:
        print(x)

Alist = ['Mon', 'Tue', 'Mon', 'wed', 40, 40]
print("Unique values from the list is")
catch_unique(Alist)

実行結果

上記のコードを実行すると、次の出力が得られます。

Unique values from the list is
Mon
Tue
wed
40

この方法のメリットは、元のリスト内での出現順序が保持される点です。一方で、リストの in 演算子による存在チェックは線形時間(O(n))かかるため、大規模なデータでは処理速度が遅くなる点に注意が必要です。

方法2:set(セット)を使う方法

Pythonのセット(set)は本質的に重複しない値のみを持つデータ構造です。この性質を利用し、リストを一度セットに変換してから、再びリストに戻すことで一意の要素だけを取得できます。

コード例

Alist = ['Mon', 'Tue', 'Mon', 'wed', 40, 40]
A_set = set(Alist)
New_List = list(A_set)
print("Unique values from the list is")
print(New_List)

実行結果

上記のコードを実行すると、次の出力が得られます。

Unique values from the list is
[40, 'Tue', 'wed', 'Mon']

セットへの変換は非常に高速で、大量のデータを扱う場合に効率的です。ただし、セットは順序を保持しないため、変換後のリストでは元の並び順が維持されない点に注意してください。順序を保ちたい場合は dict.fromkeys() を使う方法もあります。

方法3:numpy の unique() 関数を使う方法

数値計算ライブラリであるnumpyには、unique という関数が用意されています。リストを引数として渡すだけで、一意の要素を新しい配列として返してくれるため、最もシンプルに記述できる方法です。

コード例

import numpy as np

Alist = ['Mon', 'Tue', 'Mon', 'wed', 40, 40]
print("The unique values from list is: ")
print(np.unique(Alist))

実行結果

上記のコードを実行すると、次の出力が得られます。

The unique values from list is:
['40' 'Mon' 'Tue' 'wed']

np.unique() は結果をソートした状態で返します。また、入力されたリスト内の異なる型(ここでは文字列と整数)は、共通の型に統一されるため、整数の 40 が文字列の '40' として扱われている点にも留意してください。

まとめ

リストから一意の値を取得する方法は、目的によって使い分けるのがおすすめです。

  • append() + not in: 元の順序を保持したい場合に有効。ただし大きなリストでは低速。
  • set(): 高速で簡潔。ただし順序は保持されない。
  • np.unique(): 数値データやソート済みの結果が欲しい場合に便利。numpyの導入が必要。

それぞれの特性を理解し、データの規模や要件に応じて最適な手法を選択しましょう。

  1. 【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法

    リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう

  2. Pythonの辞書(ディクショナリ)からすべての値をリストとして取得する方法

    Pythonの辞書に格納されたすべての値をリスト形式で取得したい場合、最もシンプルな方法は dict.values() メソッドを使うことです。このメソッドは辞書内のすべての値を返すため、list() 関数で囲むことで簡単にリストへ変換できます。values() メソッドを使った基本的な例my_dict = {name: TutorialsPoint, time: 15 years, location: India} value_list = list(my_dict.values()) print(value_list)出力結果上記のコードを実行すると、次のような出力が得られます。[Tuto