Python list去重且保持原順序不變的方法
背景
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)代碼實現(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去重且保持原順序不變的方法的詳細內(nèi)容,更多關(guān)于Python list去重的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python Dijkstra算法實現(xiàn)最短路徑問題的方法
這篇文章主要介紹了python Dijkstra算法實現(xiàn)最短路徑問題的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Python解決IndexError: list index out of&nb
IndexError是一種常見的異常類型,它通常發(fā)生在嘗試訪問列表(list)中不存在的索引時,錯誤信息“IndexError: list index out of range”意味著你試圖訪問的列表索引超出了列表的實際范圍,所以本文給大家介紹了Python成功解決IndexError: list index out of range2024-05-05
Python+wxPython實現(xiàn)文件名批量處理
在日常的文件管理中,我們經(jīng)常需要對文件進行批量處理以符合特定的命名規(guī)則或需求,本文主要介紹了如何使用wxPython進行文件夾中文件名的批量處理,需要的可以參考下2024-04-04
pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實例
今天小編就為大家分享一篇pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Pytorch?Conda環(huán)境pack打包遷移報錯的處理方案
這篇文章主要介紹了Pytorch?Conda環(huán)境pack打包遷移報錯的處理方案,文中通過代碼示例和圖文結(jié)合的方式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07

