學(xué)Python的018天

原創(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)!?

最后編輯于
?著作權(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ù)。

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