ホームページ  >  記事  >  バックエンド開発  >  リスト内の重複要素を削除する3つの方法と効率分析

リスト内の重複要素を削除する3つの方法と効率分析

高洛峰
高洛峰オリジナル
2016-10-19 17:12:501757ブラウズ

方法 1:

リスト オブジェクトの sort() メソッドを使用してリストを並べ替え、最後の要素からリストをループし、隣接する 2 つの要素が等しいかどうかを判断します

方法 2:

一時リストを定義します。ループによって反復される要素が一時リストにない場合は追加し、最後に一時リストを返します。

def methodOne(list):
    list.sort()
    lenList = len(list)
    lastItem = list[lenList-1]
    for i in range(lenList-2,-1,-1):
        if list[i] == lastItem:
            list.remove(list[i])
        else:
            lastItem = list[i]
    return list

方法 3:

def methodTwo(list):
    tempList = []
    for i in list:
        if not i in tempList:
            tempList.append(i)
    return tempList

1. 方法 2 と比較して、方法 1 には並べ替えや代入などの追加の操作が追加されています。 Python では変数は不変であるため、要素が反復処理されて比較されるたびに、新しいローカル変数を作成して値を割り当て、元の変数を破棄する必要がありますが、同時に、より多くのメモリが必要になります。ソート操作、相対位置を破壊します。

2. 方法 2 は操作用の一時リストを作成し、そのリストは要素が追加されるたびに元のリストにインデックスと値を追加するだけなので、方法 1 よりも効率的です。 3 番目のメソッドは、(コードの単純さと操作効率の両方の点で) 3 つのメソッドの中で間違いなく最も効率的です: set() は組み込みデータ型「set type」であり、順序付けされておらず、値が唯一の項目です。 !したがって、set() の実行結果は、セットに変換され、重複する要素が直接削除され、その後 list() がセットをリスト型に変換し直します。

ただし、set() はソート順を破棄します。ソートを維持したい場合は、list(set(lists)) をsorted(set(lists),key=lists.index) に変更できます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。