Python 簡易手冊
單元 5 - 資料型態
Python 內建資料型態中有很多好用資料型態,這些資料型態可以直接用來處理資料,歸類如下表
型態種類 | 說明 |
---|---|
None | 表示什麼都沒有的物件 |
布林 | 邏輯上的真與假,僅有兩個值 True 及 False |
數字 | 包括整數、帶小數點的浮點數及實數系延伸的複數 |
迭代器 | 依規則計算出資料的型態 |
序列 | 包含元素的複合資料型態,分為不可變與可變的,可變的有串列、 bytearray 等,不可變的包括序對、 range 、字串及 bytes 等 |
集合 | 具有不重複元素的複合資料型態 |
配對 | 以 key:value 形式儲存資料的複合資料型態 |
內容管理員 | 以關鍵字 with 取得的內容物件,通常作用檔案處理 |
型態附註 | 型態別名的資料型態 |
以下各自來看這些內建資料型態的字面常數及用法
None
None 表示什麼都不是的物件,
| z = None |
布林
布林型態只有兩種值,邏輯上的真為關鍵字 True ,邏輯上的假為關鍵字 False
a = True b = False |
以上變數 a 會是 True ,變數 b 會是 False 。
單元 11 - 布林運算子會進一步介紹布林運算子。
數字
數字型態分為三種,分別是整數、浮點數及複數,整數是不帶小數點的數字,浮點數是帶小數點的數字,複數為實數系延伸的數字型態
c = 1 d = 2.3 e = 4 + 5j |
以上變數 c 是整數,變數 d 是浮點數,變數 e 是複數,複數分為實部跟虛部,實部跟虛部的中間用加號連接,虛部以英文字母 J 或 j 結尾。
單元 6 - 數字型態會詳細介紹數字型態的用法,單元 12 - 算術運算子會進一步介紹跟計算數字型態變數直接相關的算術運算子。
迭代器
迭代器是依規則計算出資料的型態,凡是迭代器物件需要定義 __iter__() 及 __next__() 兩個方法。
單元 50 - 產生器會介紹迭代器的語法糖 - 產生器,單元 66 - 迭代器會詳細介紹如何定義迭代器。
序列
序列是指有序的資料結構,包括串列、序對、 range 、字串及二進制等等都是序列,串列的字面常數為中括弧圍起來以英文逗號區分的元素,序對的字面常數則是小括弧
f = [7, 8, 9] i = (10, 11, 12) |
單元 38 - 序對與 Range會詳細介紹序對,隨後單元 39 - 串列會詳細介紹串列。
range 沒有字面常數,用內建函數 range() 建立
| j = range(1, 10 ,2) |
range() 有三種參數版本,分別是一個參數、兩個參數及三個參數,如果只有一個參數 stop ,會回傳 0 到 stop 的整數數列,兩個參數 start 與 stop ,會回傳 start 到 stop - 1 的整數數列,加上第三個參數 step 會回傳 start 到 stop - 1 間隔 step 的整數數列。
字串的字面常數為單引號或雙引號,單引號圍起的字串中可以用雙引號當內容,反之雙引號圍起的字串中也可以用單引號當內容
j = "Mary has a car." k = 'He shouted, "Help!"' |
單元 33 - 字串會詳細介紹字串。
二進制序列分成不可變的 bytes 及可變的 bytearray 兩種, bytes 字面常數為單引號或雙引號加上 b 或 B ,而 bytearray 沒有字面常數,採用內建函數 bytearray() 建立
l = b"161718" m = bytearray([19, 20, 21]) |
單元 37 - 二進制序列會詳細介紹二進制序列。
序列有以下的共通操作方式, s 、 t 表示序列, x 表示元素, n 表示整數, i 、 j 、 k 分別表示索引值的整數
操作 | 說明 |
---|---|
x in s | 判斷 x 是否是 s 的元素 |
x not in s | 判斷 x 是否不是 s 的元素 |
s + t | 回傳合併 s 與 t 的新序列 |
s * n n * s | 回傳將 s 複製 n 倍的新序列 |
s[i] | 取得 s 中索引值為 i 的元素 |
s[i:j] | 取得 s 中索引值為 i 到 j - 1 的子序列 |
s[i:j:k] | 取得 s 中索引值為 i 到 j - 1 間隔 k 的子序列 |
len(s) | 回傳 s 中的元素總量 |
min(s) | 回傳 s 中的最小值 |
max(s) | 回傳 s 中的最大值 |
s.index(x[, i[, j]]) | 回傳 s 中 x 的索引值,或是 x 在 i 到 j 之間的索引值 |
s.count(x) | 回傳 x 在 s 中的數量 |
如果是可變的序列,另外有以下操作元素的方式
操作 | 說明 |
---|---|
s[i] = x | 將 s 中索引值為 i 的元素設定為 x |
s[i:j] = t | 將 s 中索引值 i 到 j - 1 的元素替換成 t 的元素 |
del s[i:j] | 刪除 s 中 i 到 j - 1 的元素 |
s[i:j:k] = t | 將 s 中索引值 i 到 j - 1 間隔 k 的元素替換成 t 的元素 |
del s[i:j:k] | 刪除 s 中索引值 i 到 j - 1 間隔 k 的元素 |
s.append(x) | 將 x 附加到 s 的最後 |
s.clear() | 刪除 s 中的所有元素 |
s.copy() | 回傳 s 的拷貝 |
s.extend(t) s += t | 合併 s 與 t |
s *= n | 將 s 複製 n 倍 |
s.insert(i, x) | 將 x 插入 s 中索引值為 i 的位置 |
s.pop() s.pop(i) | 移除 s 的最後一個元素或是索引值為 i 的元素 |
s.remove(x) | 移除 s 中的第一個 x |
s.reverse() | 反轉 s 中元素的順序 |
集合
集合是不含有重複元素的資料結構,此外集合元素也沒有排序,字面常數為大括弧
| n = {22, 23, 24} |
單元 42 - 集合會詳細介紹集合。
配對
配對的資料型態為字典,字典元素採用 key:value 配對, key 必須是不可變的資料型態, value 則沒有限制,字面常數一樣是大括弧
| o = {25:26, 27:28, 29:30} |
單元 41 - 字典會詳細介紹字典。
內容管理員
內容管理員為用關鍵字 with 取得的內容物件,單元 28 - with 陳述介紹關鍵字 with 會連帶介紹如何處理內容管理員物件。
型態附註
型態附註 (type annotation) 的資料型態包括泛型別名 GenericAlias 及聯集型態 Union ,兩者會在單元 31 - type 陳述及單元 67 - 泛型介紹。
其他
Python 中的所有東西都是物件,凡是物件都有型態,以下整理其他的內建型態
型態種類 | 說明 |
---|---|
模組 | 副檔名 .py 的 Python 程式檔案 |
類別 | 以關鍵字 class 定義的內容 |
函數 | 以關鍵字 def 定義的內容 |
方法 | 類別中以關鍵字 def 定義的內容 |
程式碼 | 內建函數 compile() 的回傳型態 |
型態 | 內建函數 type() 的回傳型態 |
Null | 關鍵字 None 表示的型態種類 |
省略符號 | 字面常數 ... 表示的型態種類 |
未實作 | 字面常數 NotImplemented 表示的型態種類 |
後面會分別在各個單元介紹以上這些型態。
參考資料
- https://docs.python.org/3/library/stdtypes.html
- https://docs.python.org/3/reference/lexical_analysis.html#literals
- https://docs.python.org/3/tutorial/introduction.html#using-python-as-a-calculator