摘要:后面的先出場(chǎng)的是關(guān)于已經(jīng)有序的序列的操作。這次使用的模塊是,可以用來(lái)搜索,返回的是該元素應(yīng)該插入在序列的哪個(gè)位置。但不可否認(rèn),數(shù)組對(duì)于一些固定類(lèi)型的元素,操作效率更高。最后出場(chǎng)的是隊(duì)列了。
今天看第二章,但是沒(méi)看完,被其他事纏住了。
首先登場(chǎng)的是 Python 的內(nèi)置序列類(lèi)型,對(duì)此我并不陌生,但也有幾個(gè)生面孔,但是基本的操作我想應(yīng)該是一樣的,只是類(lèi)型不同。
對(duì)列表的操作中,經(jīng)常用到的就是列表推導(dǎo)和生成器表達(dá)式。剛開(kāi)始對(duì)這概念還有點(diǎn)模糊,之前只是聽(tīng)過(guò),不清楚自己有沒(méi)用過(guò)。但看書(shū)之后,發(fā)現(xiàn)自己都用過(guò)。
列表推導(dǎo)可用來(lái)優(yōu)雅地創(chuàng)建一個(gè)新的列表,而生成器表達(dá)式可以?xún)?yōu)雅地創(chuàng)建其他類(lèi)型的序列。除此之外,生成器表達(dá)式逐個(gè)產(chǎn)出元素比用 for 循環(huán)節(jié)省內(nèi)存。
對(duì)于元組,之前的印象一直都是「不可變列表」。但現(xiàn)在發(fā)現(xiàn)元組的功能遠(yuǎn)比我想象的要強(qiáng)。首先元組就是記錄的數(shù)據(jù),字段和位置信息很重要,位置亂了,數(shù)據(jù)也就亂了。
一個(gè)新成員登場(chǎng)了,那就是具名元組。這個(gè)之前沒(méi)接觸過(guò)。同樣的記錄數(shù)據(jù),這個(gè)可能會(huì)更加方便一點(diǎn),因?yàn)閿?shù)據(jù)記錄更加清晰,書(shū)上介紹的一個(gè)屬性(獲取該對(duì)象的所有字段名稱(chēng)組成的元組)和兩個(gè)函數(shù)(通過(guò)可迭代對(duì)象生成一個(gè)實(shí)例,和把具名元組以collections.OrderedDict的形式返回)。
對(duì)于元組的拆分,之前也用過(guò),但是對(duì)*運(yùn)算的卻沒(méi)怎么了解。除了可以用來(lái)忽略多余的元素,還可以「把一個(gè)可迭代對(duì)象拆開(kāi)作為函數(shù)的參數(shù)」。平行賦值中,用在一個(gè)變量名前,表示不確定數(shù)量,也只能出現(xiàn)在一個(gè)變量名前。
對(duì)序列最常用的操作還有就是切片了。之前一直有接觸但不怎么了解的就是s[a:b:c]了,它表示「對(duì) s 在 a 和 b之間以 c 為間隔取值」。之前對(duì)此概念比較模糊,現(xiàn)在算是理清了。
一個(gè)之前沒(méi)用過(guò)的技巧就是,對(duì)切片進(jìn)行賦值。這把切片的內(nèi)容直接替換了。還有 splice 對(duì)象,直接把切片包裝了。
對(duì)列表的+和*操作還是比較熟悉的,畢竟用的多。
最后就是排序了,列表自帶的list.sort()和內(nèi)置的sort函數(shù)不同,自帶的函數(shù)把自身排序了,返回的是None,而內(nèi)置的sort函數(shù)不破壞對(duì)象本身,而是返回一個(gè)新的對(duì)象,并且是穩(wěn)定排序。
剩下的一點(diǎn)內(nèi)容還沒(méi)看完,明天看吧。
后面的先出場(chǎng)的是關(guān)于已經(jīng)有序的序列的操作。這次使用的模塊是bisect,可以用來(lái)搜索,返回的是該元素應(yīng)該插入在序列的哪個(gè)位置。有可選參數(shù),表示值相同時(shí),應(yīng)該插入到已有值的左邊還是右邊,默認(rèn)是右邊。插入操作就是用到了上面的方法。
然后是數(shù)組,之前一直沒(méi)用過(guò),如作者所說(shuō),列表實(shí)在是太好用了。但不可否認(rèn),數(shù)組對(duì)于一些固定類(lèi)型的元素,操作效率更高。比如直接以二進(jìn)制形式存到文件中比純文本存消耗的空間要少得多,而且讀取時(shí)也不用再進(jìn)行轉(zhuǎn)換。
然后是兩個(gè)第三方模塊,但主要講了 Numpy 模塊。Numpy 模塊對(duì)于數(shù)學(xué)操作很方便,功能也很強(qiáng)大。想學(xué)的話,需要專(zhuān)門(mén)看一下。
內(nèi)存視圖的話,有點(diǎn)陌生??戳酥蟾杏X(jué)還是有點(diǎn)不懂怎么用。
?內(nèi)存視圖其實(shí)是泛化和去數(shù)學(xué)化的 NumPy 數(shù)組。它讓你在不需要復(fù)制內(nèi)容的前提下,在數(shù)據(jù)結(jié)構(gòu)之間共享內(nèi)存。其中數(shù)據(jù)結(jié)構(gòu)可以
是任何形式,比如 PIL圖片、SQLite 數(shù)據(jù)庫(kù)和 NumPy 的數(shù)組,等等。這個(gè)功能在處理大型數(shù)據(jù)集合的時(shí)候非常重要。
不過(guò)書(shū)上的例子的操作是看懂了。
最后出場(chǎng)的是隊(duì)列了。列表雖然也能做到隊(duì)列那樣的操作,但是效率是個(gè)問(wèn)題。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41568.html
摘要:把具名元組以的形式返回,我們可以利用它來(lái)把元組里的信息友好地呈現(xiàn)出來(lái)。數(shù)組支持所有跟可變序列有關(guān)的操作,包括和。雙向隊(duì)列和其他形式的隊(duì)列類(lèi)雙向隊(duì)列是一個(gè)線程安全可以快速?gòu)膬啥颂砑踊蛘邉h除元素的數(shù)據(jù)類(lèi)型。 列表表達(dá)式 >>> symbols = $¢£¥€¤ >>> codes = [ord(symbol) for symbol in symbols] >>> codes [36, 16...
摘要:自己定義的抽象基類(lèi)要繼承。抽象基類(lèi)可以包含具體方法。這里想表達(dá)的觀點(diǎn)是我們可以偷懶,直接從抽象基類(lèi)中繼承不是那么理想的具體方法。 抽象基類(lèi) 抽象基類(lèi)的常見(jiàn)用途: 實(shí)現(xiàn)接口時(shí)作為超類(lèi)使用。 然后,說(shuō)明抽象基類(lèi)如何檢查具體子類(lèi)是否符合接口定義,以及如何使用注冊(cè)機(jī)制聲明一個(gè)類(lèi)實(shí)現(xiàn)了某個(gè)接口,而不進(jìn)行子類(lèi)化操作。 如何讓抽象基類(lèi)自動(dòng)識(shí)別任何符合接口的類(lèi)——不進(jìn)行子類(lèi)化或注冊(cè)。 接口在動(dòng)態(tài)類(lèi)...
摘要:例如,的序列協(xié)議只需要和兩個(gè)方法。任何類(lèi)如,只要使用標(biāo)準(zhǔn)的簽名和語(yǔ)義實(shí)現(xiàn)了這兩個(gè)方法,就能用在任何期待序列的地方。方法開(kāi)放了內(nèi)置序列實(shí)現(xiàn)的棘手邏輯,用于優(yōu)雅地處理缺失索引和負(fù)數(shù)索引,以及長(zhǎng)度超過(guò)目標(biāo)序列的切片。 序列的修改、散列和切片 接著造Vector2d類(lèi) 要達(dá)到的要求 為了編寫(xiě)Vector(3, 4) 和 Vector(3, 4, 5) 這樣的代碼,我們可以讓 init 法接受任...
摘要:流暢的中有很多奇技淫巧,整本書(shū)都在強(qiáng)調(diào)如何最大限度地利用標(biāo)準(zhǔn)庫(kù)。常見(jiàn)的扁平序列包括,,等。數(shù)組支持所有跟可變序列有關(guān)的操作,包括和。和用于指定列表的區(qū)間,默認(rèn)是使用整個(gè)列表。但是元組的賦值不被允許,當(dāng)異發(fā)生時(shí) 流暢的python中有很多奇技淫巧,整本書(shū)都在強(qiáng)調(diào)如何最大限度地利用Python 標(biāo)準(zhǔn)庫(kù)。介紹了很多python的不常用的數(shù)據(jù)類(lèi)型、操作、庫(kù)等,對(duì)于入門(mén)python后想要提升對(duì)p...
摘要:第一章數(shù)據(jù)類(lèi)型隱式方法利用快速生成類(lèi)方法方法通過(guò)下標(biāo)找元素自動(dòng)支持切片操作可迭代方法與如果是一個(gè)自定義類(lèi)的對(duì)象,那么會(huì)自己去調(diào)用其中由你實(shí)現(xiàn)的方法。若返回,則會(huì)返回否則返回。一個(gè)對(duì)象沒(méi)有函數(shù),解釋器會(huì)用作為替代。 第一章 python數(shù)據(jù)類(lèi)型 1 隱式方法 利用collections.namedtuple 快速生成類(lèi) import collections Card = collec...
閱讀 1815·2021-09-28 09:43
閱讀 1159·2021-09-23 11:22
閱讀 2776·2021-09-14 18:05
閱讀 1851·2019-08-30 15:52
閱讀 2847·2019-08-30 10:55
閱讀 2045·2019-08-29 16:58
閱讀 1382·2019-08-29 16:37
閱讀 3066·2019-08-29 16:25