數據結構是以某種方式(如通過編號)組合起來的數據元素(如數、字符乃至其他數據結構)集合。在Python中,最基本的數據結構爲序列(sequence)。序列中的每個元素都有編號,即其位置或索引,其中第一個元素的索引爲0,第二個元素的索引爲1,依此類推。
1. 序列概述
Python內置了多種序列,本章重點討論其中最常用的兩種: 列表和元組。另一種重要的序列是字符串,列表和元組的主要不同在於,列表是可以修改的,而元組不可以。
2. 通用序列操作
有幾種操作適用於所有序列,包括索引、 切片、 相加、 相乘和成員資格檢查。
操作 | 描述 | 舉例 |
索引(indexing) | 序列中所有元素都有編號---從0開始遞增,負數索引表示從右開始往左數,-1代表最後一個元素 |
>>>greeting = 'Hello' >>>greeting[0] 'H' >>>greeting[-1] 'o' |
切片(slicing) | 切片適用於提取序列的一部分,其中的編號非常重要:第一個索引是包含的第一個元素的編號,但第二個索引是切片後餘下的第一個元素的編號。此外切片還能指定步長:[起始索引:結束索引:步長]。 |
>>>url = 'www.python.com' >>>print( url[4:-4]) >>>python
|
相加 | 可使用加法運算符來拼接序列。一般而言,不能拼接不同類型的序列。 |
>>>[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] >>>'Hello,' + 'world!' 'Hello,world!' |
相乘 | 將序列與數x相乘時,將重複這個序列x次來創建一個新序列。Python中,None表示空,因此可以初始化空序列,sequence = [None] * 10 |
>>>[26] * 5 [26, 26, 26, 26, 26] >>>'Hi' * 5 'HiHiHi' |
成員資格 | 要檢查特定的值是否包含在序列中,可使用運算符in。該運算符屬於布爾運算符,滿足時返回True,不滿足時返回False。 | >>> permissions = 'rw' >>> 'w' in permissions True |
內置函數 | 內置函數len、 min和max很有用。 |
>>> numbers = [100, 34, 678] 34 |
3. 基本列表操作
可對列表執行所有的標準序列操作,如索引、切片、拼接和相乘,但列表的有趣之處在於它是可以修改的。本節將介紹一些修改列表的方式:給元素賦值、刪除元素、給切片賦值以及使用列表的方法。(請注意,並非所有列表方法都會修改列表。)
函數 | 描述 | 舉例 |
list | 鑑於不能像修改列表那樣修改字符串,因此在有些情況下使用字符串來創建列表可使用函數list。要將字符列表轉換爲字符串,可以使用''.join()函數。 |
>>> somelist = list('Hello') >>> ''.join(somelist) 'Hello' |
修改列表 | 可使用索引來修改列表的元素。 |
>>> x = [1, 1, 1] >>> x[1] = 2 >>> x [1, 2, 1] |
del | 從列表中刪除元素。 | >>> names = ['Alice', 'Beth'] >>> del names[1] >>> names ['Alice'] |
append | append用於將一個對象附加到列表末尾。 | >>> lst = [1, 2, 3] >>> lst.append(4) >>> lst [1, 2, 3, 4] |
clear | 方法clear就地清空列表的內容。 | >>> lst = [1, 2, 3] >>> lst.clear() >>> lst [] |
copy | 方法 copy 複製列表。 | >>> a = [1, 2, 3] >>> b = a.copy() >>> b[1] = 4 [1, 4, 3] |
count | 方法count計算指定的元素在列表中出現了多少次。 | >>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to') 2 |
extend | 方法extend讓你能夠同時將多個值附加到列表末尾,該方法類似於拼接,但是沒有創建新的列表,而是在原有的列表裏附加。 | >>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6] |
index | 方法index在列表中查找指定值第一次出現的索引。 | >>> knights = ['We', 'are', 'the', 'knights', 'who', 'say', 'ni'] >>> knights.index('who') 4 |
insert | ||
pop | ||
remove | ||
reverse | ||
sort |