本文摘自《流暢的python》
python 標準庫用 c 實現了豐富的序列型別,列舉如下。
按照存放的資料型別的不同來分類:
容器序列
list、tuple和collections.deque,這些序列能存放不同型別的資料。
扁平序列
str、bytes、bytearray、memoryview和array.array,這類序列只能容納一種型別。
按照能否被修改來分類:
可變序列
list、bytearray、array.array、collections.deque和memoryview。
不可變序列
tuple、str和bytes。
容器序列存放的是它們所包含的任意型別的物件的引用,而扁平序列裡存放的是值而不是引用。換句話說,扁平序列其實是一段連續的記憶體空間。由此可見扁平序列其實更加緊湊,但是它裡面只能存放諸如字元、位元組和數值這種基礎型別。
下圖顯示了可變序列(mutablesequence)和不可變序列(sequence)的差異,同時也能看出前者從後者那裡繼承了一些方法。雖然內建的序列型別並不是直接從sequence和mutablesequence這兩個抽象基類(abstract base class,abc)繼承而來的,但是了解這些基類可以幫助我們總結出那些完整的序列型別包含了哪些功能。
這個uml 類圖列舉了collections.abc中的幾個類(超類在左邊,箭頭從子類指向超類,斜體名稱代表抽象類和抽象方法)
python 也從abc 那裡繼承了用統一的風格去處理序列資料這一特點。不管是哪種資料結構,字串、列表、位元組序列、陣列、xml 元素,抑或是資料庫查詢結果,它們都共用一套豐富的操作:迭代、切片、排序,還有拼接
python序列型別
字元型別 字串字面量 將文字放入單引號 雙引號 三引號中 文件字串 def testdoc testdoc print hello world testdoc hello world testdoc.doc testdoc s i 索引運算子 s i j 切片運算子,s i j stride 擴充套...
python 序列型別
x in s 如果x是s的元素,返回true x not in s 同理 s t 連線兩個序列 s n 將s序列複製n次 s i 索引 s i j s i j k 返回從i到j以k為間隔的子串行ls python 1 2 ls 1 對序列取反len s 返回s長度 min s s中最小的元素 max...
python 序列型別
序列表示索引為非負整數的有序物件集合,包括字串,列表,元祖。字串是字元的序列,列表和元祖是任意python物件的序列。字串和元祖不可變,列表可以插入,刪除和替換元素,是可變的。所有序列都支援迭代 索引s i s 123456 s 5 6 切片 s i j s i j stride l a b c d...