原創(chuàng):XIAO油菜花
學(xué)習(xí)進(jìn)度記錄:
《零基礎(chǔ)入門學(xué)習(xí)Python》P27:集合:在我的世界里,你就是唯一
《Python開發(fā)入門與爬蟲項(xiàng)目實(shí)戰(zhàn)》:Python中的函數(shù):遞歸查找
課后思考
0.請(qǐng)問集合的唯一作用是什么呢?
1.如果你希望創(chuàng)建的集合是不變的,應(yīng)該怎么做?
2.請(qǐng)問如何確定一個(gè)集合里邊有多少個(gè)元素?
3.請(qǐng)目測(cè)以下代碼會(huì)打印什么內(nèi)容?
>>> num_set = set([1, 2, 3, 4, 5])
>>> num_set[0]
4.請(qǐng)問 set1 = {[1, 2]} 和 set1 = set([1, 2]) 執(zhí)行的結(jié)果一樣嗎?
5.打開你的IDLE,輸入set1 = {1, 1.0},你發(fā)現(xiàn)了什么?
6.請(qǐng)問如何給集合添加和刪除元素?
答案
0.集合的作用就是確保里邊包含的元素的唯一性。
1.frozenset()
2.len()函數(shù)
3.會(huì)報(bào)錯(cuò),因?yàn)榧鲜菬o(wú)序的。
4.不一樣,set1 = set([1, 2]) 會(huì)生成一個(gè)集合{1, 2},但set1 = {[1, 2]}卻會(huì)報(bào)錯(cuò)。
>>> set1 = {[1, 2]}
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
set1 = {[1, 2]}
TypeError: unhashable type: 'list'
從報(bào)錯(cuò)信息上我們看到“列表不是可哈希類型”,沒錯(cuò),列表是可變的,它怎么可以哈希呢?原來(lái),,,集合跟字典的存儲(chǔ)方式一樣的!
其實(shí)你再想想就會(huì)覺得很有道理,利用哈希函數(shù)計(jì)算,相同的元素得到的哈希值(存放地址)是相同的,所以在集合中所有相同的元素都會(huì)覆蓋掉,因此有了集合的唯一性。然后你繼續(xù)接著想就覺得更有道理了,通過哈希函數(shù)計(jì)算的地址不可能是按順序排放的,所以集合才強(qiáng)調(diào)是無(wú)序的!
5.集合內(nèi)容是{1.0},其實(shí)你弄懂了上一題,這一題就很容易理解了:因?yàn)樵赑ython的哈希函數(shù)會(huì)將相同的值的元素計(jì)算得到相同的地址,所以1和1.0是等值的。
6.使用add()方法可以為集合添加元素,使用remove()方法可以刪除集合中已知的元素。
知識(shí)點(diǎn)備忘
集合類型內(nèi)建方法

如果你關(guān)注了我,希望你監(jiān)督我,鼓勵(lì)我,與我一起學(xué)習(xí),一起成長(zhǎng)!?