Python list去重且保持原順序不變的方法
背景
python 去重一頓操作猛如虎,set list 扒拉下去,就去重了,但是順序就打亂了。如果對順序沒有需要的話,這樣確實(shí)沒有什么所謂。
但是如果需要保留順序的話,就需要一點(diǎn)小小的改變。
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)代碼實(shí)現(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)代碼實(shí)現(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 # 等價(jià)于 [[], L],方便后面計(jì)算
總結(jié)
如果糾結(jié)空間復(fù)雜度的,用 python 干啥?
先談能不能完成,再談優(yōu)化吧。
以上就是Python list去重且保持原順序不變的方法的詳細(xì)內(nèi)容,更多關(guān)于Python list去重的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Python獲取當(dāng)前工作目錄和執(zhí)行命令的位置
這篇文章主要介紹了使用Python獲取當(dāng)前工作目錄和執(zhí)行命令的位置,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python利用pptx操作PPT實(shí)現(xiàn)幻燈片的刪除與替換
這篇文章主要為大家詳細(xì)介紹了python如何使用pptx庫實(shí)現(xiàn)操作PPTx幻燈片文件刪除并替換圖片,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下2023-02-02Python Socketserver實(shí)現(xiàn)FTP文件上傳下載代碼實(shí)例
這篇文章主要介紹了Python Socketserver實(shí)現(xiàn)FTP文件上傳下載代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Python時(shí)間戳與日期格式之間相互轉(zhuǎn)化的詳細(xì)教程
java默認(rèn)精度是毫秒級別的,生成的時(shí)間戳是13位,而python默認(rèn)是10位的,精度是秒,下面這篇文章主要給大家介紹了關(guān)于Python時(shí)間戳與日期格式之間相互轉(zhuǎn)化的相關(guān)資料,需要的朋友可以參考下2022-08-08Python如何利用opencv實(shí)現(xiàn)手勢識別
這篇文章主要介紹了Python如何利用opencv實(shí)現(xiàn)手勢識別,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙可以參考一下2022-05-05一起用Python做個(gè)上課點(diǎn)名器的制作過程
今天給大家分享一個(gè)讀者粉絲投稿的,關(guān)于上課點(diǎn)名的實(shí)戰(zhàn)案例,對Python上課點(diǎn)名器實(shí)現(xiàn)過程感興趣的朋友,一起來看看是如何實(shí)現(xiàn)的吧2021-09-09Python?pandas中read_csv參數(shù)示例詳解
使用pandas做數(shù)據(jù)處理的第一步就是讀取數(shù)據(jù),數(shù)據(jù)源可以來自于各種地方,csv文件便是其中之一,下面這篇文章主要給大家介紹了關(guān)于Python?pandas中read_csv參數(shù)詳解的相關(guān)資料,需要的朋友可以參考下2023-01-01Python利用Matplotlib庫實(shí)現(xiàn)繪制餅形圖
這篇文章主要為大家分享了基于python+matplotlib庫的餅形圖繪制,具體內(nèi)容涉及一般的餅圖、分裂餅圖、以及環(huán)形圖,感興趣的小伙伴可以了解一下2022-04-04