常見內置序列類型(Sequence Type) 類型 英文名 對應關鍵字 構造函數 是否可變 列表 list list list() 可變 元組 tuple tuple tuple() 不可變 數字序列:range range range range() 不可變 文本序列:字元串 string st ...
常見內置序列類型(Sequence Type)
類型 | 英文名 | 對應關鍵字 | 構造函數 | 是否可變 |
---|---|---|---|---|
列表 | list | list | list() |
可變 |
元組 | tuple | tuple | tuple() |
不可變 |
數字序列:range | range | range | range() |
不可變 |
文本序列:字元串 | string | str | str() |
不可變 |
通用序列操作(Common Sequence Operation)
大多數序列類型,包括可變類型和不可變類型都支持下表中的操作。
此表按優先順序升序列出了序列操作。 在表格中,s 和 t 是具有相同類型的序列,n, i, j 和 k 是整數而 x 是任何滿足 s 所規定的類型和值限制的任意對象。
Note:
(序列的切片一般支持負索引,但筆者很少用負索引,一般只它來獲取最後一位)
(s.index
如果找不到結果會報錯)
運算 | 結果: |
---|---|
x in s |
如果 s 中的某項等於 x 則結果為 True ,否則為 False |
x not in s |
如果 s 中的某項等於 x 則結果為 False ,否則為 True |
s + t |
s 與 t 相拼接(concatenation) |
s * n 或 n * s |
相當於 s 與自身進行 n 次拼接 |
s[i] |
s 的第 i 項,起始為 0 |
s[i:j] |
s 從 i 到 j 的切片(slice ) |
s[i:j:k] |
s 從 i 到 j 步長為 k 的切片 |
len(s) |
s 的長度 |
min(s) |
s 的最小項 |
max(s) |
s 的最大項 |
s.index(x[, i[, j]]) |
x 在 s 中首次出現項的索引號(index)(索引號在 i 或其後且在 j 之前) |
s.count(x) |
x 在 s 中出現的總次數 |
可變序列 - 列表(list)
列表是可變序列,通常用於存放同類項目的集合。
列表的構建方式:
- 使用一對方括弧來表示空列表:
[]
- 使用方括弧,其中的項以逗號分隔:
[a]
,[a, b, c]
- 使用列表推導式:
[x for x in iterable]
- 使用類型的構造器:
list()
或list(iterable)
列表內置方法:
-
sort(*, key=None, reverse=False)
此方法會對列表進行排序,只使用
<
來進行各項間比較。- reverse 如果設為
True
,則每個列表元素將按反向順序比較進行排序。 - key 一個對列表內元素進行預處理的函數,通常用於處理非數據類型列表。
- reverse 如果設為
可變序列 (列表) 支持的操作:
表格中的 s 是可變序列類型的實例(instance),t 是任意可迭代對象(iterable object),而 x 是符合對 s 所規定類型與值限制的任何對象。
(當 s.remove(x)
找不到 x
時會報錯 ValueError
)
運算 | 結果: |
---|---|
s[i] = x |
將 s 的第 i 項替換為 x |
s[i:j] = t |
將 s 從 i 到 j 的切片替換為可迭代對象 t 的內容 |
del s[i:j] |
等同於 s[i:j] = [] |
s[i:j:k] = t |
將 s[i:j:k] 的元素替換為 t 的元素 |
del s[i:j:k] |
從列表中移除 s[i:j:k] 的元素 |
s.append(x) |
將 x 添加到序列的末尾 (等同於 s[len(s):len(s)] = [x] ) |
s.clear() |
從 s 中移除所有項 (items)(等同於 del s[:] ) |
s.copy() |
創建 s 的淺拷貝(shallow copy) (等同於 s[:] ) |
s.extend(t) 或 s += t |
用 t 的內容擴展 s (基本上等同於 s[len(s):len(s)] = t ) |
s *= n |
使用 s 的內容重覆 n 次來對其進行更新 |
s.insert(i, x) |
在由 i 給出的索引位置將 x 插入 s (等同於 s[i:i] = [x] ) |
s.pop() 或 s.pop(i) |
提取在 i 位置上的項,並將其從 s 中移除,i 預設為 -1 |
s.remove(x) |
刪除 s 中第一個 s[i] 等於 x 的項目。 |
s.reverse() |
就地將列表中的元素逆序。 |
不可變序列
元組(tuple)
元組是不可變序列,實現了所有通用序列操作。
元組的構建方式:
- 使用一對圓括弧來表示空元組:
()
- 使用一個尾碼的逗號來表示單元組:
a,
或(a,)
- 使用以逗號分隔的多個項:
a, b, c
or(a, b, c)
- 使用內置的
tuple()
:tuple()
或tuple(iterable)
請註意決定生成元組的其實是逗號而不是圓括弧。 圓括弧只是可選的,生成空元組或需要避免語法歧義的情況除外。 例如,f(a, b, c)
是在調用函數時附帶三個參數,而 f((a, b, c))
則是在調用函數時附帶一個三元組。
range對象
range
類型表示不可變的數字序列,通常用於在 for
迴圈中迴圈指定的次數。
range 對象實現了通用序列操作,但拼接和重覆除外。
range的構造方式:
class range(stop)
class range(start, stop[, step])
-
range 構造器的參數必須為整數。
-
start
預設為0
,step
預設為1
- 如果 step 為正值,確定 range
r
內容的公式為r[i] = start + step*i
其中i >= 0
且r[i] < stop
。 - 如果 step 為負值,確定 range 內容的公式仍然為
r[i] = start + step*i
,但限制條件改為i >= 0
且r[i] > stop
.
- 如果 step 為正值,確定 range
-
如果
r[0]
不符合值的限制條件,則該 range 對象為空。 -
range 對象支持負索引,將其解讀為從正索引所確定的序列的末尾開始索引。
字元串(String)
字元串是由 Unicode 碼位構成的不可變序列。字元串實現了所有通用序列操作。
str的構造方式
- 單引號:
'允許包含有 "雙" 引號'
- 雙引號:
"允許嵌入 '單' 引號"
- 三重引號:
'''三重單引號'''
,"""三重雙引號"""
(三重引號保留文本原始格式) - 禁止轉義字元生效:
r'\n不會轉義'
,r"\t也不會轉義"
等
由於不存在單獨的“字元”類型,對字元串做索引操作將產生一個長度為 1 的字元串。 也就是說,對於一個非空字元串 s, s[0] == s[0:1]
。
字元串常用內置方法:
字元串全部方法: Python 文檔:字元串的方法
查找類 | 方法說明 |
---|---|
find() |
查找元素是否在字元串中,若存在則返回下邊(index),否則返回-1 |
index() |
查找元素是否在字元串中,若存在則返回下標,否則報錯 |
修改類 | 方法說明 |
---|---|
replace() |
替換內容 |
split() |
切割字元串,預設以空格切割,返回一個列表 |
join() |
將序列的內容以指定符號拼接 |
upper() |
將字元串中的小寫轉大寫 |
lower() |
將字元串中的大寫轉小寫 |
strip() |
刪除字元串兩側的空白字元 |
判斷類 | 方法說明 |
---|---|
isalpha() |
如果字元串所有字元都是字母,返回True ,否則返回False 。 |
isdigit() |
如果字元串所有字元都是數字,返回True ,否則返回False 。 |
isalnum() |
如果字元串所有字元都是字母或數字,返回True ,否則返回False 。 |
ref:
Python 文檔:序列類型 - list, tuple, and range
Python 文檔:可變序列類型
Python 文檔:字元串的方法