Lesson 2-1 (數據結構,序列通用的操作)
2.0 數據結構
--- 數據結構是以某種方式組合起來的數據元素集合。
--- python的常見的數據結構
2.1 序列(sequence)
--- 序列中的每個元素都有編號,即索引(也稱為下標)。
--- 第一個位置索引為0,第二為1,依次類推。也可用負索引,末尾位置為-1,倒數第二為-2,依次類推。
--- 元組是一種特殊的序列,類似於列表,但是不能修改。
2.2 通用的序列操作
2.2.1 索引(indexing)
--- 可通過索引來獲取序列中該位置的元素,索引只能是整數,不能是浮點數。
--- 序列從左往右,索引由0開始遞增;序列從右往左,索引由-1開始遞減。
1 >>> seq = "Hello world!" 2 >>> seq[0] 3 ‘H‘ 4 >>> seq[7] 5 ‘o‘ 6 >>> seq[-1] 7 ‘!‘ 8 >>> seq[-3] 9 ‘l‘ 10 >>>
--- 多重序列中的索引表示法
1 >>> seq = [["H", "e", "l", "l", "o"], ["w", "o", "r", "l", "d"]] 2 >>> seq[0] 3 [‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘] 4 >>> seq[0][1] 5 ‘e‘ 6 >>> seq[-1][-3] 7 ‘r‘ 8 >>>
2.2.2 切片(slicing)
--- 使用索引可以訪問序列中的單個元素,使用切片可以訪問序列中特定範圍內的元素。
--- 切片表示法:[ A : B : C ] ,其中,A表示切片開始處的索引(包括),B表示切片結束處的索引(不包括),C表示切片的步長(可省略,默認為1,不能為0,但可以為負數)。
--- 即A和B是兩個索引,用來指定切片的邊界,並遵循左閉右開原則。
1 >>> seq = "Hello world!" 2 >>> seq[1:7] 3 ‘ello w‘ 4 >>> seq[1:7:2] 5 ‘el ‘ 6 >>> seq[-3:-1] 7 ‘ld‘ 8 >>> seq[-10:-1:3] 9 ‘l r‘ 10 >>>
--- 當步長為默認或正數時,A索引必須比B索引位於序列的左邊,否則訪問到的是空序列。步長為負數時,則正好相反。
>>> seq = "Hello world!" >>> seq[7:2] ‘‘ >>> seq[-1:-5] ‘‘ >>>
--- 省略表示法。如果從序列最左邊開始,則A索引可省略;如果到序列最末尾結束,則B索引可省略;如果A、B索引都省略,則表示訪問整個序列。
1 >>> seq = "Hello world!" 2 >>> seq[ :7] 3 ‘Hello w‘ 4 >>> seq[-7: ] 5 ‘ world!‘ 6 >>> seq[ : ] 7 ‘Hello world!‘ 8 >>>
--- 步長為負數時,表示從序列的右邊開始往左訪問序列中的元素。A、B索引為空,步長為-1,則表示顛倒順序訪問序列中的元素。
1 >>> seq = "Hello world!" 2 >>> seq[7:1:-1] 3 ‘ow oll‘ 4 >>> seq[7:1:-2] 5 ‘o l‘ 6 >>> seq[-2:-8:-1] 7 ‘dlrow ‘ 8 >>> seq[-2:-8:-2] 9 ‘drw‘ 10 >>> seq[ : :-1] 11 ‘!dlrow olleH‘ 12 >>>
2.2.3 序列相加
--- 可使用加法運算符拼接序列
--- 不能拼接不同類型的序列
1 >>> seq_1 = "Hello " 2 >>> seq_2 = "world!" 3 >>> seq = seq_1 + seq_2 4 >>> seq 5 ‘Hello world!‘ 6 >>> seq_1 = "Hello " 7 >>> seq_2 = [1, 2, 3] 8 >>> seq = seq_1 + seq_2 9 Traceback (most recent call last): 10 File "<stdin>", line 1, in <module> 11 TypeError: must be str, not list 12 >>>
2.2.4 序列乘法(復制)
--- 序列與整數n相乘時,將復制這個序列n次來得到一個新序列,從而實現序列的復制。
1 >>> seq = "Hello " * 5 2 >>> seq 3 ‘Hello Hello Hello Hello Hello ‘ 4 >>>
2.2.5 成員資格
--- 檢查特定值是否包含在序列中,使用 in 和 not in 運算符。檢查結果返回布爾值True和False。
1 >>> seq = "Hello world!" 2 >>> "e" in seq 3 True 4 >>> "h" in seq 5 False 6 >>> "h" not in seq 7 True 8 >>>
2.2.6 序列長度、最小值和最大值
--- 可通過內置函數len、min和max得出序列相對應的長度、最小值和最大值。最小、最大值比較依據元素在ASCII碼表中的ASCII值。
1 >>> seq = "Hello world!" 2 >>> len(seq) 3 12 4 >>> min(seq) 5 ‘ ‘ 6 >>> max(seq) 7 ‘w‘ 8 >>> seq = [1, 2, 3, -4] 9 >>> min(seq) 10 -4 11 >>> max(seq) 12 3 13 >>>
Lesson 2-1 (數據結構,序列通用的操作)