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

Pythonでリストから重複要素を削除する方法を徹底解説

重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。

実行例

入力::[2,3,4,3,4,6,78,90]
出力::[2,3,4,6,78,90]

アルゴリズム

重複要素を削除するための基本的な手順は以下の通りです。

  1. 元となるリストを作成する。
  2. 空の新しいリストを用意する。
  3. 元のリストの各要素を先頭から順番に走査する。
  4. その要素が新しいリストにまだ存在しないかどうかを判定する。
  5. 存在しない場合のみ、新しいリストへ要素を追加する。
  6. すべての走査が終わったら、新しいリストを表示する。

サンプルコード

# 重複要素を削除する関数
def remove_duplicate_ele(A):
    newlist = []
    for n in A:
        if n not in newlist:
            newlist.append(n)
    return newlist

# ドライバーコード
A = list()
n = int(input("リストのサイズを入力してください ::"))
print("数値を入力してください ::")
for i in range(int(n)):
    k = int(input(""))
    A.append(int(k))
print("新しいリストは ::>", remove_duplicate_ele(A))

実行結果

リストのサイズを入力してください ::5
数値を入力してください ::
10
20
30
20
10
新しいリストは ::> [10, 20, 30]

このコードでは、ユーザーからリストのサイズと各要素を受け取り、remove_duplicate_ele()関数によって重複のない新しいリストを生成しています。in演算子による存在チェックがポイントです。

別の方法:set()やdict.fromkeys()を使った簡潔な記述

Pythonでは、組み込み機能を活用することで、より短いコードで重複を削除できます。

# set()を使う方法(要素の順序は保持されない)
A = [2, 3, 4, 3, 4, 6, 78, 90]
result = list(set(A))
print(result)  # [2, 3, 4, 6, 78, 90]

# dict.fromkeys()を使う方法(元の順序を保持)
result = list(dict.fromkeys(A))
print(result)  # [2, 3, 4, 6, 78, 90]

set()は重複を自動的に排除しますが、要素の並び順が変わる可能性がある点に注意が必要です。元の順序を維持したい場合は、Python 3.7以降で挿入順が保証されている辞書の特性を利用したdict.fromkeys()が便利です。

まとめ

リストから重複要素を削除する基本は、「空のリストを用意し、存在チェックをしながら要素を追加していく」というアプローチです。処理の流れを理解したい初心者にはこの方法がおすすめですが、実務ではset()dict.fromkeys()を使えば簡潔かつ高速に記述できます。データの規模や順序の必要性に応じて、最適な方法を選択しましょう。

  1. PythonでリストからN個の最大要素を取得する方法

    整数のリストが与えられたとき、その中からN個の大きな要素を取り出して新しいリストとして返すのが、ここでの課題です。本記事では、基本的なループ処理による方法から、Python標準ライブラリを活用した効率的な方法まで、サンプルコードとともに解説します。 例 入力 : [40, 5, 10, 20, 9] N = 2 出力 : [40, 20] アルゴリズム 整数のリストと、取得する要素数Nを受け取ります。 N回のループを実行します。 各ループでリスト内の最大値を探し、新しいリストに格納すると同時に元のリストから削除します。 実装コード def Nnumberele(list1, N):

  2. Pythonでインデックスを指定してリストから要素を削除する方法

    Pythonでリストからインデックスを指定して要素を削除するには、主に2つの方法があります。del文を使う方法と、pop()メソッドを使う方法です。 del文で要素を削除する del文は、削除したい要素のインデックスを指定して使用します。指定した位置の要素がリストから取り除かれます。 >>> L1=[11,22,33,44,55,66,77] >>> del L1[2] >>> L1 [11, 22, 44, 55, 66, 77] 上記の例では、インデックス2(3番目の要素「33」)が削除され、リストの要素数が1つ減っています。del文は