我是如何跨專業(yè)零基礎(chǔ)學(xué)習(xí)Python爬蟲的(3 使用set對(duì)list去重)

在上一篇文章中我們看到了Python對(duì)于清單(list)的處理方法,而在實(shí)際的爬蟲過程中,當(dāng)我們將上萬條數(shù)據(jù)存儲(chǔ)并提取list之后,常遇到的一個(gè)問題是怎么去掉list中重復(fù)的元素而只保留不重復(fù)的元素,這個(gè)時(shí)候我們就要用到今天展示的set方法。

比如列表a = [5, 2, 5, 1, 4, 3, 4],可以用如下方式實(shí)現(xiàn)

a?=?[5,?2,?5,?1,?4,?3,?4]

print?list(set(a))

如果想要保持他們?cè)瓉淼呐判颍?/p>

用list類的sort方法

l1 =['b','c','d','b','c','a','a']

l2 =list(set(l1))

l2.sort(key=l1.index)

printl2

也可以這樣寫

l1 =['b','c','d','b','c','a','a']

l2 =sorted(set(l1),key=l1.index)

printl2

也可以用遍歷

l1 =['b','c','d','b','c','a','a']

l2 =[]

fori inl1:

ifnoti inl2:

l2.append(i)

printl2

上面的代碼也可以這樣寫

l1 =['b','c','d','b','c','a','a']

l2 =[]

[l2.append(i) fori inl1 ifnoti inl2]

printl2

這樣就可以保證排序不變了:

1['b', 'c', 'd', 'a']


Python中set集合對(duì)象還支持union(聯(lián)合[|])、intersection(交[&])、difference(差[-])和sysmmetric

difference(對(duì)稱差集^)等數(shù)學(xué)運(yùn)算。如下:

a?=?set('abracadabra')

b?=?set('alacazam')

#?a包含且b包含的字符

print?a?&?b

print?a.intersection(b)

#?a包含或b包含的字符

print?a?|?b

print?a.union(b)

#?a包含且b不包含的字符

print?a?-?b

print?a.difference(b)

#?a包含且b不包含的字符和b包含且a不包含的字符

print?a?^?b

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容