91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中怎么對列表元素去重并保持原有順序

發布時間:2021-07-10 15:25:48 來源:億速云 閱讀:344 作者:Leah 欄目:互聯網科技

這篇文章給大家介紹python中怎么對列表元素去重并保持原有順序,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

這個需求涉及到集合,上代碼前先講講集合。講集合前我們先回顧一下可變數據類型和不可變數據類型。

  • 不可變數據類型:數字number(含int、float、bool、complex)、字符串string、元組tuple。

  • 可變數據類型:列表list、字典dict、集合set。

集合的存取是基于hash算法映射,只有不可變數據類型才能做hash算法,所以集合中只能存放不可變數據類型。集合的特性是去重、無序。學集合時最先接觸的是交并差,每一本教python的書講到集合都不會漏講交并差,這里就不贅述了。

那么現在,我們需要將一個列表中的元素去重并保持原有順序。最優解是什么?

還是直接上代碼看案例吧:

raw_address = ['北京市', '北京市', '昌平區', '人民大街', '9999號']  # 客戶自行錄入的原始地址信息
# 數據庫中的地址信息是'北京市昌平區人民大街9999號',如何將客戶錄入的地址信息與數據庫中的地址信息進行匹配?
address = list(set(raw_address))  # 對原始地址list先轉成集合再轉成列表,自動完成去重
print(address)  # 輸出的是['人民大街', '昌平區', '9999號', '北京市']
address.sort(key=raw_address.index)  # 再對去重后的列表按原始順序排列
print(address)  # 輸出的是['北京市', '昌平區', '人民大街', '9999號']

可以看到用python對列表中的元素去重并保持原始的順序只要2行代碼即可完成,運行速度也相當高。

這背后是什么原理呢?

這是因為在python中變量實質是一種引用,上述案例中raw_address列表有5條字符串,分別存儲在內存不同的地址。rad_address列表中保存了5條字符串的內存地址,在去重的時候不需要對列表中的字符串兩兩匹配是否有重復(這種運算相當耗時),只要檢測是否存在相同的內存地址引用,去掉重復的引用只保留一條即可迅速去重。在還原順序的時候只要根據原列表的元素索引排序即可。

關于python中怎么對列表元素去重并保持原有順序就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开封县| 盘山县| 阜康市| 临夏市| 宝山区| 军事| 登封市| 曲沃县| 广河县| 南雄市| 霍州市| 开封县| 高雄市| 龙江县| 孝感市| 琼海市| 焉耆| 大同县| 砀山县| 阳春市| 泸溪县| 万宁市| 册亨县| 芒康县| 县级市| 读书| 仙桃市| 杭州市| 正蓝旗| 泾源县| 德昌县| 闵行区| 舒兰市| 甘洛县| 高碑店市| 赞皇县| 青州市| 德州市| 勐海县| 安徽省| 望城县|