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