tft每日頭條

 > 圖文

 > python列表剔除重複元素

python列表剔除重複元素

圖文 更新时间:2024-09-28 18:08:42

python列表剔除重複元素?這個需求涉及到集合,上代碼前先講講集合講集合前我們先回顧一下可變數據類型和不可變數據類型,今天小編就來聊一聊關于python列表剔除重複元素?接下來我們就一起去研究一下吧!

python列表剔除重複元素(python之列表中的元素去重并保持原有順序)1

python列表剔除重複元素

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

  • 不可變數據類型:數字number(含int、float、bool、complex)、字符串string、元組tuple。
  • 可變數據類型:列表list、字典dict、集合set。

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

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

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

raw_address = ['北京市', '北京市', '昌平區', '人民大街', '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條字符串的内存地址,在去重的時候不需要對列表中的字符串兩兩匹配是否有重複(這種運算相當耗時),隻要檢測是否存在相同的内存地址引用,去掉重複的引用隻保留一條即可迅速去重。在還原順序的時候隻要根據原列表的元素索引排序即可。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved