1. 程式人生 > >Lesson 2-1 (數據結構,序列通用的操作)

Lesson 2-1 (數據結構,序列通用的操作)

row 切片 範圍 最小值 運算符 clas height trac 序列

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 (數據結構,序列通用的操作)