在寫code時可能會遇到python 串列(list) 處理的各種method應用,今天要提到的是
其中 去除重複值通常可以使用幾種方法:
那麼我們知道要怎麼去除list中的重複值後,如果想要篩選/拿出這些重複值又該怎麼做?
初學者如我,第一個想到的就是利用for迴圈去一一檢視是否重複,再用另一個list把他們接住。如此就可以收集到這些重複值了。以下是我試寫的範例:
可是這樣也太麻煩了吧 QAQ
於是我在survey過程中發現 Data Scientist維元 的文章:
Python 挑戰題:「只挑出重複出現的元素」參考解析
其中有寫到 拿出list中重複值的其他解法!一起來試試看吧!
方法二:利用 List 中的 count() 方法…
假設今天list中有重複值,並且我想要獨立拿出這些重複值:
用自訂函數的方式,把list先利用set() 執行後,再利用迴圈搭配count() 的方式,一一去看原本的list中的元素,數起來是不是大於1。
–- –-也就是說先用set()去除重複值後,用精簡後的list元素一個一個拿出來當作索引值,再去原本的list用count()數這個元素是不是曾經出現過超過一次。如果是,就代表其已經重複。然後把這些出現次數超過1次的元素再收集起來,燈等✨✨ There you have the repeated items!
*以上有利用list comprehension練習讓code簡潔一點。
假設我們今天要比對兩個list (list A & list B) 中是否有重複值,並且我想要獨立拿出這些重複值,該怎麼做呢?
你可能需要考慮原本的兩個list當中是不是原本就有重複值,將 原先list的重複值要先處理掉,以上述概念延伸過來,再利用set()集合運算的特性,找出重複值。
set()可以做集合的運算,例如:聯集union、交集intersection、差集difference等。
聯集union -> 兩個以上集合元素的總和(contains all the elements of both sets) (重複的部分會被扣掉一次)
寫法:
交集intersection -> 同時存在於多個集合當中的元素(contains all the elements that are common to both sets)
寫法:
差集difference -> 集合與集合中不一樣的元素(the difference between two sets)
如寫A與B的差集,A在前即代表存在在A當中但不存在在B當中的元素
反過來,B在前方即代表存在在B當中但不存在在A當中的元素
寫法:
對稱差集symmetric difference ->
-使用python優雅的一行解決list或DataFrame資料去重問題
-從列表中挑選重複出現的元素臉書討論串from維元
-Union() function in Python