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