Python 3.1 快速導覽 - 內建序列型態

內建的序列型態 (sequence types) 共有六種,分別是

型態描述
str字串 (string) ,不可變 (immutable)
bytes字節 (byte) ,不可變
bytearray字節陣列 (byte array) ,可變 (mutable)
list串列 (list) ,可變
tuple序對 (tuple) ,不可變
range內建函數 range() 回傳的物件 (object) ,常用於 for 迴圈 (for loop)


可進行以下的計算
計算描述
x in s判斷 x 是否在 s 中
x not in s判斷 x 是否不在 s 中
s + t連接 s 及 t
s * n, n * s將 s 重複 n 次連接 s 本身
s[i]取得索引值 i 的元素
s[i:j]取得索引值 i 到 j 的子序列
s[i:j:k]取得索引值 i 到 j ,間隔 k 的子序列
len(s)回傳 s 的元素個數
min(s)回傳 s 中的最小值
max(s)回傳 s 中的最大值
s.index(i)取得 s 中第一次出現 i 的索引值
s.count(i)累計 s 中 i 出現的個數


字串型態有以下的方法 (method)
方法描述
str.capitalize()回傳將 str 改成首字母大寫,其餘字母小寫的字串
str.center(width[, fillchar])回傳一個將 str 設置字串中央,長度 width 的新字串, fillchar 為填充字元,預設為空格
str.count(sub[, start[, end]])計算 sub 出現的次數, start 為起始計算索引值, end 為結束索引值
str.encode(encoding="utf-8", errors="strict")回傳 encoding 版本的 bytes 物件
str.endswith(suffix[, start[, end]])判斷 str 是否以 suffix 結尾
str.expandtabs([tabsize])將 tab 符號以 tabsize 的空格數替換
str.find(sub[, start[, end]])回傳 sub 第一次出現的索引值
str.format(*args, **kwargs)進行格式化字串運算
str.index(sub[, start[, end]])回傳 sub 第一次出現的索引值
str.isalnum()判斷字串中的字元是否至少一個是字母或數字
str.isalpha()判斷字串中的字元是否至少一個是字母
str.isdecimal()判斷字串中所有字元是否是十進位數字
str.isdigit()判斷字串中所有字元是否是數字
str.isidentifier()判斷字串是否可作為合法的識別字
str.islower()判斷字串中所有字母字元是否都是小寫字母
str.isnumeric()判斷字串中所有字元是否是數字
str.isprintable()判斷字串中所有字元是否都屬於可見字元
str.isspace()判斷字串是否為空格字元
str.istitle()判斷字串是否適合當作標題
str.isupper()判斷字串中所有字母字元是否都是大寫字母
str.join(iterable)回傳將 str 連結 iterable 各元素的字串
str.ljust(width[, fillchar])回傳將 str 在寬度 width 向左對齊的字串, fillchar 為填充字元,預設為空格
str.lower()將 str 的英文字母都改成小寫
str.lstrip([chars])回傳將 str 左邊具有 chars 字元去除的拷貝版本, chars 預設為空格符號
static str.maketrans(x[, y[, z]])回傳 x 與 y 配對的 Unicode 編碼字典,若有提供 z , z 中的字元會跟 None 配對
str.partition(sep)以 sep 分割 str 為三個部份,結果回傳具有三個子字串的序對
str.replace(old, new[, count])將 str 中的 old 子字串以 new 代換
str.rfind(sub[, start[, end]])尋找最右邊的 sub ,也就是索引值最大的 sub
str.rindex(sub[, start[, end]])尋找最右邊的 sub ,也就是索引值最大的 sub
str.rjust(width[, fillchar])回傳將 str 在寬度 width 向右對齊的字串, fillchar 為填充字元,預設為空格
str.rpartition(sep)以 sep 從最右端分割 str 為三個部份,結果回傳具有三個子字串的序對
str.rsplit([sep[, maxsplit]])將 str 從最右端以 sep 分割成子字串,回傳儲存子字串的串列, maxsplit 為子字串最多的數量
str.rstrip([chars])從 str 的最右端中移除 chars 字元,預設為空白字元
str.split([sep[, maxsplit]])將 str 以 sep 分割成子字串,回傳儲存子字串的串列, maxsplit 為子字串最多的數量
str.splitlines([keepends])將 str 以新行符號分割成子字串,回傳儲存子字串的串列
str.startswith(prefix[, start[, end]])判斷 str 是否以 prefix 開頭
str.strip([chars])從 str 中移除 chars 字元,預設為空白字元
str.swapcase()將 str 中的英文字母進行大小寫轉換
str.title()將 str 轉換成作為標題的字串
str.translate(map)將 str 中的字元以 map 中配對的字元轉換
str.upper()將 str 的英文字母都改成大寫
str.zfill(width)回傳以 0 塞滿 width 的新字串


字節型態與字節陣列為相對的資料型態,前者是不可變的,後者是可變的。兩者有以下的方法
方法描述
bytes.decode(encoding="utf-8", errors="strict")將 bytes 解譯為指定編碼的字串
bytearray.decode(encoding="utf-8", errors="strict")將 bytearray 解譯為指定編碼的字串
classmethod bytes.fromhex(string)將具有十六進位數字的字串 string 轉換為字節型態
classmethod bytearray.fromhex(string)將具有十六進位數字的字串 string 轉換為字節陣列
bytes.translate(table[, delete])將 bytes 依 table 替換字元, delete 為所要刪除的字元
bytearray.translate(table[, delete])將 bytearray 依 table 替換字元, delete 為所要刪除的字元
static bytes.maketrans(from, to)回傳字節型態的轉換表,使之用於 translate() 方法
static bytearray.maketrans(from, to)回傳字節陣列的轉換表,使之用於 translate() 方法


串列與序對也是相對的資料型態,由於串列也是可變的,也是 Python 中大量運用的工作型態種類,因此有額外以下的計算
計算描述
s[i] = x將索引值 i 的元素指派為 x
s[i:j] = t將索引值 i 到 j 的元素指派為 t , t 為迭代器
del s[i:j]刪除索引值 i 到 j 的元素
s[i:j:k] = t將索引值 i 到 j ,間隔 k 的元素指派為 t , t 為迭代器
del s[i:j:k]刪除索引值 i 到 j ,間隔 k 的元素
串列綜合運算 list comprehension運用運算式生成新的串列



串列型態有以下的方法
方法描述
list.append(x)將 x 附加到 list 的最後
list.extend(x)將 x 中的元素附加到 list 的最後
list.count(x)計算 list 中 x 出現的次數
list.index(x[, i[, j]])回傳 x 在 list 最小的索引值
list.insert(i, x)將 x 插入 list 索引值 i 的地方
list.pop([i])取出 list 中索引值為 i 的元素,預設是最後一個
list.remove(x)移除 list 中第一個 x 元素
list.reverse()倒轉 list 中元素的順序
list.sort([key[, reverse]])排序 list 中的元素


舉例示範如下
a = "puppy"
print(a)
print(type(a))
print()

b = b"puppy"
print(b)
print(type(b))
print()

c = bytearray(b)
print(c)
print(type(c))
print()

d = list(a)
print(d)
print(type(d))
print()

e = tuple(a)
print(e)
print(type(e))
print()

f = range(10)
print(f)
print(type(f))
print()

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:sequence.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月


執行結果如下



中英文術語對照
序列型態sequence types
字串string
不可變immutable
字節byte
可變mutable
字節陣列byte array
串列list
序對tuple
物件object
for 迴圈for loop
方法method


內建型態




沒有留言: