Python list去重且保持原順序不變的方法
更新時間:2021年04月02日 16:59:35 作者:RaXianch
這篇文章主要介紹了Python list去重且保持原順序不變的方法,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
背景
python 去重一頓操作猛如虎,set list 扒拉下去,就去重了,但是順序就打亂了。如果對順序沒有需要的話,這樣確實沒有什么所謂。
但是如果需要保留順序的話,就需要一點小小的改變。
code && demo
list 去重,順序亂掉
# 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)代碼實現
# 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)代碼實現
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],方便后面計算
總結
如果糾結空間復雜度的,用 python 干啥?
先談能不能完成,再談優(yōu)化吧。
以上就是Python list去重且保持原順序不變的方法的詳細內容,更多關于Python list去重的資料請關注腳本之家其它相關文章!
相關文章
Python Socketserver實現FTP文件上傳下載代碼實例
這篇文章主要介紹了Python Socketserver實現FTP文件上傳下載代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03

