工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Pythonリストから重複要素を削除する方法:順序保持と効率のバランス

リストは、整数、文字列、カスタムオブジェクトなどの順序付きコレクションを保持するPythonの基本データ構造です。他言語の配列に相当します。

以下に、順序と可読性を保ちながらリストから重複要素を削除する実証済みの手法を示します。

setを使用した重複削除

Pythonの組み込みset()関数は、一意な要素のみを返すことで重複を排除します。リストをセットに変換し、再びリストに戻すことでコレクション形式を維持します。

my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))

出力:

[1, 2, 3, 4, 5, 6]

一時リストを使用した重複削除

空のリストを作成し、元のリストをイテレーションして、未出現のアイテムのみを追加します。

my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2]
print("List Before ", my_list)
temp_list = []
for i in my_list:
    if i not in temp_list:
        temp_list.append(i)
my_list = temp_list
print("List After removing duplicates ", my_list)

出力:

List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]
List After removing duplicates [1, 2, 3, 4, 5, 6]

OrderedDict(またはdict.fromkeys)を使用した重複削除

Python 3.5以降では、通常のdictが挿入順を保持するため、dict.fromkeys()を使って順序を保ったまま一意な値を取得できます。

my_list = ['a','x','a','y','a','b','b','c']
my_final_list = dict.fromkeys(my_list)
print(list(my_final_list))

出力:

['a', 'x', 'y', 'b', 'c']

シンプルなforループで重複削除

リストを走査し、未出現のアイテムのみを新しいリストに追加します。

my_list = [1,2,2,3,1,4,5,1,2,6]
myFinallist = []
for i in my_list:
    if i not in myFinallist:
        myFinallist.append(i)
print(myFinallist)

出力:

[1, 2, 3, 4, 5, 6]

リスト内包表記で重複削除

リスト内包表記で簡潔に記述しつつ可読性を維持できます。

my_list = [1,2,2,3,1,4,5,1,2,6]
my_finallist = []
[my_finallist.append(n) for n in my_list if n not in my_finallist]
print(my_finallist)

出力:

[1, 2, 3, 4, 5, 6]

NumPyのunique()で重複削除

NumPyのunique()関数は、配列のソート済み一意要素を返します。

import numpy as np
my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = np.unique(my_list).tolist()
print(myFinalList)

出力:

[1, 2, 3, 4, 5, 6]

Pandasのunique()で重複削除

同様に、Pandasもリストライクなオブジェクトで動作する軽量なunique()メソッドを提供します。

import pandas as pd
my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = pd.unique(my_list).tolist()
print(myFinalList)

出力:

[1, 2, 3, 4, 5, 6]

enumerate()とリスト内包表記で重複削除

enumerate()とリスト内包表記を組み合わせると、各要素の最初の出現を保持しつつ重複を削除できます。

my_list = [1,2,2,3,1,4,5,1,2,6]
my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]]
print(my_finallist)

出力:

[1, 2, 3, 4, 5, 6]

まとめ

Python

  1. Python データ型マスター: 実践ガイド
  2. Python 演算子完全マスター: 包括的ガイド
  3. Python pass文完全マスター: 実践ガイド
  4. Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
  5. Python range()関数をマスター:基礎から応用まで
  6. Pythonリスト完全ガイド:追加、ソート、長さ、リスト内包表記(実践編)
  7. Pythonで平均を計算する:実践ガイド
  8. Python list.count() 完全ガイド:実践例付きで徹底解説
  9. Pythonリストから要素を削除する方法:remove()、pop()、clear()、del
  10. Python list.index():要素の位置を検索する実践ガイド
  11. Python リスト完全ガイド:作成、操作、メソッドのすべて