方法 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) に変更できます
。