python爬蟲(三)--Python的set()

來源:互聯網
上載者:User

標籤:

如果你已經掌握了爬蟲基礎,看了我前面三個基礎再來繼續看這一篇文章。
這篇文章主要講解爬蟲程式中必須要用到的python集合,如果你對集合很瞭解。那可以不用看。

在爬蟲程式中,為了不重複爬取已經爬過的頁面,我們需要把已經爬過的頁面的url放進集合中,
在每一次要爬取某一個url之前,先看看集合裡面是否已經存在,如果已經存在跳過這個url,如果不存在
我們把ur放進彙總中,然後再去爬取這個頁面

python提供了set這種資料結構,set是一種無序的,不包含重複元素的結構,一般用來測試是否
已經包含了某元素,或者對眾多元素們去重複。它支援的運算有交、並、差、對稱差。像所有的
容器一樣,set支援的方法有
x in set,len(set),for x in set
作為一個無序的結構,set不會記錄元素的位置,以及元素插入的順序,因此,set不支援一下方法
不支援(index,slice...)
set中的元素是可變的,改變set中元素的操作可以是add()和remove()。他沒有散列值,因此
set不可以被認為是一個字典的key或者自以為其他set的元素

建立一個set可以用set()函數或者花括弧{},但是建立一個空集是不能使用一個花括弧的,只能用
set()函數,因為一個空的花括弧建立的是一個字典資料結構,

先看一些例子吧:
1.1
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(s1)
#結果:
{‘woman‘, ‘boy‘, ‘child‘, ‘man‘, ‘girl‘, ‘older‘}
#通過第一個例子可以看出兩點,第一set可以直接去重,第二set元素是無序的

1.2
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(‘girl在s1中嗎?‘,‘girl‘ in s1)
print(‘girls在s中嗎?‘,‘girls‘ in s1)
#輸出是:
girl在s1中嗎? True
girls在s中嗎? False

1.3
len(s)
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(‘s1有多少元素:‘,len(s1))
輸出的:6
顯然,len計算了去重之後的元素個數

1.4
關於issubset(),和issuperset()方法
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
print(s2.issubset(s1))   #s2中的元素是否全屬於s1中的元素
print(s3.issubset(s1))     #s3中的元素是否全屬於s1中的元素
print(s1.issuperset(s2)) #s2中的元素是否全屬於s1中的元素
print(s1.issuperset(s3)) #s3中的元素是否全屬於s1中的元素

1.5
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 |= s3
print(s2)   #以上兩句話等同於print(s2.union(s3)),去重
set.union(set1,set2,set3...)方法,或者用 set | set2 | set3 |...
取並集

1.6
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 &= s3
print(s2)   #以上兩句話等同於print(s2.intersection(s3))
set.intersection(set1,set2,set3...),或者用 set & set2 & set3...
取交集

1.7
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 -= s3
print(s2)   #以上兩句話等同於print(s2.difference(s3))
set.difference(set2,set3...),或者用 set - set1 -set2...
存在於set中但是在其他set中不存在元素

1.8
s2 = {‘boy‘,‘woman‘}
s3 = {‘boy‘,‘people‘}
s2 ^= s3
print(s2)   #以上兩句話等同於print(s2.symmetric_difference(s3))
返回一個新的set,這個set中存放的是,兩個set中各自專屬的元素

1.9
最後是最基本的增刪改
s1 = {‘girl‘,‘boy‘,‘woman‘,‘man‘,‘older‘,‘child‘,‘man‘}
print(s1)
s1.add(‘hello‘)
print(s1)
s1.remove(‘hello‘)
print(s1)
s1.discard(‘man‘)
print(s1)
s1.pop()
print(s1)
s1.clear()

有了這些基礎,你就可以進入下一界的學習了,下一節將進一步學習python的Regex

鐘志遠  江蘇南京  904727147

python爬蟲(三)--Python的set()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.