Python list去重且保持原順序不變的方法
python 去重一頓操作猛如虎,set list 扒拉下去,就去重了,但是順序就打亂了。如果對順序沒有需要的話,這樣確實沒有什么所謂。但是如果需要保留順序的話,就需要一點(diǎn)小小的改變。
code && demolist 去重,順序亂掉
# normal 寫法l1 = [’b’,’c’,’d’,’b’,’c’,’a’,’a’]l2 = list(set(l1))print(l2)# plus 寫法l1 = [’b’,’c’,’d’,’b’,’c’,’a’,’a’]l2 = {}.fromkeys(l1).keys()
去重后還是原 list 順序
# normal 寫法l1 = [’b’,’c’,’d’,’b’,’c’,’a’,’a’]l2 = list(set(l1))l2.sort(key=l1.index)# plus 寫法l1 = [’b’,’c’,’d’,’b’,’c’,’a’,’a’]l2 = sorted(set(l1),key=l1.index)
寫循環(huán)代碼實現(xiàn)
# normal 寫法l1 = [’b’,’c’,’d’,’b’,’c’,’a’,’a’]l2 = []for i in l1: if not i in l2: l2.append(i) # plus 寫法l1 = [’b’,’c’,’d’,’b’,’c’,’a’,’a’]l2 = [][l2.append(i) for i in l1 if not i in l2]
寫 while 循環(huán)代碼實現(xiàn)
L = [3, 1, 2, 1, 3, 4]T = L[:]for i in L: while T.count(i) > 1: del T[T.index(i)]T.sort(key=L.index)
lambda 寫法
備注:
ambda L,i: L if i in L else L + [i] # 如果元素在列表中,那么返回列表本身,不在的話 L + [i] [[],] + L # 等價于 [[], L],方便后面計算 總結(jié)如果糾結(jié)空間復(fù)雜度的,用 python 干啥?先談能不能完成,再談優(yōu)化吧。
以上就是Python list去重且保持原順序不變的方法的詳細(xì)內(nèi)容,更多關(guān)于Python list去重的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. python如何實現(xiàn)word批量轉(zhuǎn)HTML2. python excel和yaml文件的讀取封裝3. 利用單元測試對PHP代碼進(jìn)行檢查4. Java8內(nèi)存模型PermGen Metaspace實例解析5. python3實現(xiàn)往mysql中插入datetime類型的數(shù)據(jù)6. moment轉(zhuǎn)化時間戳出現(xiàn)Invalid Date的問題及解決7. python爬蟲實戰(zhàn)之制作屬于自己的一個IP代理模塊8. 如何對php程序中的常見漏洞進(jìn)行攻擊9. Python實現(xiàn)AES加密,解密的兩種方法10. Python實現(xiàn)http接口自動化測試的示例代碼
