給定乙個列表,要求刪除列表中重複元素。
lista = ['python','語','言','是','lwxzrzpcpe一','門','動','態','語','言']
方法1,對列表呼叫排序,從末尾依次比較相鄰兩個元素,遇重複元素則刪除,否則指標左移一位重複上述過程:
def deleteduplicatedelementfromlist(list):
list.sort();
print("sorted list:%s" % list)
length = len(list)
lastitem = list[length - 1]
程式設計客棧 for i in range(length - 2,-1,-1):
currentitem = list[i]
if currentitem == lastitem:
list.remove(currentitem)
else:
lastitem = currentitem
return list
方法2,設一臨時列表儲存結果,從頭遍歷原列表,如臨時列表中沒有當前元素則追加:
def deleteduplicatedelementfromlist2(list):
resultlist =
for item in list:
if not item in resultlist:
resultlist.append(item)
return resultlist
方法3,利用python中集合元素惟一性特點,將列表轉為集合,將轉為列表返回:
def deleteduplicatedelementfromlist3(lista):
#return list(set(lista))
return sorted(set(lista), key = lista.index)
執行結果:
print(deleteduplicatedelementfromlist(lista))
#sorted list:['python', '一', '動', '態', '是', '言', '言', '語', '語', '門程式設計客棧']
#['python', '一', '動', '態', '是', '言', '語', '門']
print(deleteduplicatedelementfromlist2(lista))
#['python', '語', '言', '是', '一', '門', '動', '態']
print(deleteduplicatedelementfromlist3(lista))
#['python', '語', '言', '是', 'lwxzrzpcpe一', '門', '動', '態']
分析:方法1,邏輯複雜,臨時變數儲存值消耗記憶體,返回結果破壞了原列表順序,效率最差
方法2,直接呼叫append方法原處修改列表,邏輯清晰,效率次之
方法3,極度簡潔,使用python原生方法效率最高
ps:這裡再為大家提供幾款去重複工具供大家參考使用:
**去除重複項工具:
**文字去重複工具:
python list列表中刪除多個重複元素
我們以下面這個list為例,刪除其中所有值為6的元素 l 9,6 5,6 6,7 8,9 6,0 首先嘗試remove方法 l.remove 6 print l 結果為 9,5,6,6,7,8,9,6,0 只刪除了第乙個為6的元素。如果採用for迴圈遍歷各元素 for x in l if x 6 l...
python 去除列表重複元素
1.1邏輯去除 推薦面試使用 def dedup list li 定義乙個列表去重的函式 定義乙個空列表用於接收不重複的列表元素 dedup li list 定義乙個相關變數,用於下標的判斷 index 0 相同的任意個元素,用列表的index方法只能取到第乙個重複元素的下標 遍歷列表,同時每取到乙...
python 去除列表重複元素
比較容易記憶的是用內建的 setl1 b c d b c a a l2 list set l1 print l2 還有一種據說速度更快的,沒測試過兩者的速度差別 l1 b c d b c a a l2 fromkeys l1 keys print l2 這兩種都有個缺點,祛除重複元素後排序變了 a ...