Python 速查手冊

2.5 串列及序對

本書已有新版,請參考 Python 簡易手冊 - 目錄

串列 (list) 的字面常數 (literal) 為中括弧圍起來以逗號區隔的元素,每個元素可以是不同的資料型態 (data type) ,如果中括弧內沒有元素,就叫做空串列 (empty list) 。序對 (tuple) 的字面常數為小括弧圍起來以逗號區隔的元素,跟串列一樣,每個元素可以是不同的資料型態,沒有元素的小括弧就叫做空序對 (empty tuple) ,例如

a = [1, 2.0, "3"]
print(a)
b = []
print(b)
c = (1, 2.0, "3")
print(c)
d = ()
print(d)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:list01.py
# 功能:示範定義串列及序對
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 list01.py
[1, 2.0, '3']
[]
(1, 2.0, '3')
()
$

串列與序對在設定資料上很像,兩者最大的差別是串列可變,也就是可以更換串列的元素值,序對不可變,這是說一旦建立序對後,該序對就跟數學上的常數一樣,不能改變內容。

Python 中處理資料,第一個想到的資料結構 (data structure) 就是串列,例如取得一組數據後,依序把數字放到串列中,然後再進行後續的處理,這樣就不必設置過多的變數,同樣的,文字資料也可以切割成字串,然後放到串列中處理,相對不用改變內容的話,也能改用序對。

建立串列除了字面常數外,也能用串列的建構子 (constructor) ,這裡注意串列的建構子 都採英文小寫字母,因此也被歸類到內建函數 (built-in function) ,參數 (parameter) 可以是任何的迭代器物件,也就是任何序列

a = list("1234")
print(a)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:list02.py
# 功能:示範串列的建構子
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 list02.py
['1', '2', '3', '4']
$

同樣的,建立序對除了字面常數外,也能用序對的建構子,序對的建構子 tuple() 也被歸類到內建函數,參數可以是任何的迭代器物件,這跟串列一樣

a = tuple("1234")
print(a)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:list03.py
# 功能:示範序對的建構子
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 list03.py
('1', '2', '3', '4')
$

串列及序對都是序列,因此可以用序列的方式操作

s = [1, 2]
t = [3, 4]
s += t
print(t in s)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:list04.py
# 功能:示範串列的操作
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 list04.py
False
$
上例的 s += ts 會得到 t 中所有的元素,而 s in t 則是判斷 s 中是否有 t 這個元素,由於 t 是串列, s 的內容則只有整數 14 ,因此 t in s 回傳 False

序列型態有下表的操作模式

模式說明
x in s判斷 x 是否在 s 中。
x not in s判斷 x 是否不在 s 中。
s + x將 x 附加在 s 之後。
s * n將 s 中的元素複製 n 倍。
s[i]取得 s 中索引值為 i 的元素。
s[i:j]取得 s 中索引值 i 到 j 之間的元素。
s[i:j:k]取得 s 中索引值 i 到 j 之間以 k 為間隔的元素。
len(s)回傳 s 的的元素總數。
min(s)回傳 s 中的最小值。
max(s)回傳 s 中的最大值。

由於串列是可變的,因此串列多了很多改變元素內容的操作,例如,利用索引值更換元素內容,關鍵字 (keyword) del 可刪除元素,還有像是 append() 方法可以附加元素到串列的末端, copy() 方法進行拷貝, remove() 方法移除元素等

關於串列相關方法的詳細解說,請參考 10.1 串列 list ,序列相關方法的詳細解說,請參考 10.2 序對 tuple

相關教學影片

上一頁: 2.4 字串
Python 速查手冊 - 目錄
下一頁: 2.6 Ranges
回 Python 教材首頁
回程式語言教材首頁