《Fluent Python》讀書筆記 2 8

2021-10-10 07:42:17 字數 596 閱讀 6589

在序列容器裡有乙個經常的操作,那就是排序。

list.sort 和 內建sorted函式

list.sort方法是把列表在原地進行排序的操作,也就是說不產生新的列表返回,它執行結束之後返回none。此方法返回none表示它不建立新的列表物件返回,並且它在原地修改了列表,這乙個程式設計習慣在python裡形成了傳統。因而所有python的api函式或方法都遵守這個偏好,明確告訴呼叫者,它在原地對物件作了更改,並沒有新物件建立返回。如果你去檢視一下,會發現random.shuffle方法也遵守這個規則。

相反,內建函式sorted是建立乙個新的列表物件返回,因為它不僅僅接收列表,還可以接收不可修改的序列容器,這樣必須是返回乙個新物件才可以成立。list.sort 和 sorted都接收兩個關鍵字引數

reverse: 設定為true表示降序排列資料,否則設定為false就是公升序排列,這是預設的方式。

key:乙個引數的函式用來計算排序的關鍵值。比如對乙個字串進行排序時,設定key = str.lower表示不區分大小寫的排序;設定為key=len表示按字串的長

Fluent Python讀書筆記 二

特殊方法的存在是為了被python直譯器呼叫的,自己並不需要呼叫它。所以使用len object 而不是object.len 如果object是乙個自定義類的物件,python會自己呼叫其中由你實現的 len 方法,而如果是python內建的型別 list,str,bytearray等 cpytho...

Fluent Python讀書筆記 三

容器序列 list tuple和collections.deque這些序列可以存放不同型別的資料。存放的是它們所包含的任意型別的物件的引用。扁平序列 str bytes bytearray memoryview和array.array,這類序列只能容納一種型別。存放的是值而不是引用,扁平序列其實是一...

fluent Python 讀書筆記(二)

對書中1 2 示例中的筆記 1.我們自定義實現乙個類,如何實現這個類的加法,乘法,模等性質呢?以二維向量為例。from math import hypot class vector def init self,x 0,y 0 self.x x self.y y def repr self retur...