在上一篇文章中我們看到了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