一、字典和集合
(1)字典
Python里字典(dict)是一種比較常用的數(shù)據(jù)結(jié)構(gòu),基本格式{key : values}
,key
和values
可以為任意類(lèi)型,比如int
,str
等。
(2)集合
Python里集合(set),可以使用大括號(hào) { } 或者 set() 函數(shù)創(chuàng)建,可以稱為特殊列表,不能包含重復(fù)元素,另外需要注意:創(chuàng)建一個(gè)空集合必須用 set() 而不是 { },因?yàn)橹挥?{ } 是用來(lái)創(chuàng)建,系統(tǒng)會(huì)默認(rèn)為空字典。
(3)小技能,模糊查找
startswith 函數(shù)
startswith函數(shù)用于檢查字符串是否是以指定子字符串開(kāi)頭,如果是則返回 True,否則返回 False。如果參數(shù) beg 和 end 指定值,則在指定范圍內(nèi)檢查。
參數(shù)介紹
startswith(str, beg,end)
str -- 檢測(cè)的字符串。
beg -- 可選參數(shù)用于設(shè)置字符串檢測(cè)的起始位置。
end -- 可選參數(shù)用于設(shè)置字符串檢測(cè)的結(jié)束位置。
(1)基本介紹
書(shū)上是這樣說(shuō)的“信不信由你,從開(kāi)始閱讀本書(shū)起,你就一直在使用Python對(duì)象”,我覺(jué)得,完全沒(méi)毛病,你有對(duì)象嗎?
差點(diǎn)忘了,我這個(gè)是小技能,就不太細(xì)的去講這些理論性的東西了,下面圖片簡(jiǎn)單介紹一下類(lèi)與對(duì)象,覺(jué)得不錯(cuò)點(diǎn)個(gè)贊哦~
簡(jiǎn)單介紹一下
(2)創(chuàng)建類(lèi),創(chuàng)建對(duì)象,調(diào)用類(lèi)方法
創(chuàng)建類(lèi):class關(guān)鍵字,根據(jù)縮進(jìn)確定類(lèi)范圍
創(chuàng)建對(duì)象: 對(duì)象 = 類(lèi)名(變量) 如:t0 = Myclass()
調(diào)用類(lèi)方法:對(duì)象名.類(lèi)方法名(參數(shù)) 如:t0.my_function()
(3)最重要的init__()函數(shù)
Python 里由“__”開(kāi)始的和結(jié)尾的為保留字。
方法__init__
是類(lèi)最重要的方法之一,根據(jù)名字可以看出來(lái),表示初始化,創(chuàng)建類(lèi)對(duì)象的同時(shí)會(huì)自動(dòng)調(diào)用這個(gè)方法,傳參給類(lèi)變量,通過(guò)__init__
函數(shù)是個(gè)不錯(cuò)的選擇或者說(shuō)唯一選擇。
在Python中,一邊循環(huán)一邊計(jì)算的機(jī)制,稱為生成器(Generator)。
也可以這樣理解,生成器就是一個(gè)可以自動(dòng)迭代的對(duì)象,類(lèi)似于for循環(huán),又比f(wàn)or循環(huán)靈活。
根據(jù)上面,我們大致了解到生成器就是一個(gè)可迭代的對(duì)象,用yield關(guān)鍵字可以實(shí)現(xiàn),上面已經(jīng)說(shuō)了函數(shù)執(zhí)行到y(tǒng)ield語(yǔ)句,就會(huì)停止本次運(yùn)行,返回yield后的參數(shù)或語(yǔ)句,等下次調(diào)用該函數(shù)時(shí),會(huì)從上次暫停的地方開(kāi)始繼續(xù)運(yùn)行迭代,你肯定會(huì)想,那生成器到底有什么用呢?
我們?cè)賮?lái)看一個(gè)實(shí)例:
生成整數(shù)范圍內(nèi)的奇數(shù),很多人會(huì)覺(jué)得,我直接也可以生成啊,為什么要用yield改成生成器呢?你有沒(méi)有想過(guò),整數(shù)內(nèi)的奇數(shù),雖然有一個(gè)范圍,但是,也還是很多的哈,你用什么存儲(chǔ)呢?生成器的好處就是,你需要多少個(gè),或者說(shuō)你需要哪一個(gè),需要第幾個(gè),我就給你找到這個(gè)數(shù),只要到了這個(gè)數(shù),我就停下來(lái)休息,等你下次想找別的了,我再接著繼續(xù)找,一樣的找到就休息,所以這樣我們就不用考慮,這么多數(shù)放哪個(gè)地方了。
再來(lái)一個(gè)高級(jí)實(shí)例收尾:
思路比較簡(jiǎn)單,生成隨機(jī)數(shù),首先要有個(gè)隨機(jī)數(shù)種子(初始值),然后對(duì)初始值進(jìn)行一些隨機(jī)操作,這里采用了擴(kuò)大(與一個(gè)質(zhì)數(shù)相乘),回原(與另一個(gè)質(zhì)數(shù)取余),這樣反復(fù)做了兩次,最后與max_rand 取余,得出最終隨機(jī)數(shù),這樣一頓騷操作保證了數(shù)據(jù)的隨機(jī)性,中間操作要設(shè)計(jì)到恰到好處,比較難,像密碼學(xué)老師說(shuō)的“你加密,又加密,再加密,又再加密···很可能最后出來(lái)的就是明文了”。
最后介紹一下__next__()
函數(shù),第一個(gè)實(shí)例就說(shuō)了,生成器可以用for循環(huán)迭代,另外還有一個(gè)內(nèi)置函數(shù)__next__
也是可以的,從名字可以看出就是調(diào)出下一個(gè),示例如下:
生成器給我最大的感受就是,我在使用的過(guò)程中,不用過(guò)多的考慮,這些數(shù)據(jù)可能會(huì)溢出,或者怎么樣,讓我更多的想我實(shí)現(xiàn)的功能怎么設(shè)計(jì)會(huì)漂亮一點(diǎn),多看看,敲一下上面的實(shí)例代碼,就理解了,別妄想著看一遍就能懂,也不要邊看邊抓頭發(fā),有閑時(shí)候多出去走走,多敲敲代碼,看看電影,聊聊天,聽(tīng)聽(tīng)歌,看看書(shū)。。。(說(shuō)多了,下次見(jiàn):裝飾器)
靈活應(yīng)用這些基本操作,讓你的工作學(xué)習(xí)事半功倍。
堅(jiān)持和努力:終有所獲。
聯(lián)系客服