Python 3.1 快速導覽 - 內建集合型態 (set)

內建的集合型態 (set types) 共有兩種,分別是

型態描述
set集合 (set) ,可變 (mutable)
forzenset原封集合 (forzenset) ,建立後變不新增或刪除元素 (element) ,因此為不可變 (immutable)


集合型態的字面常數使用大括弧圍起來,其物件屬於複合資料型態 (compound data type) ,也就是說單一集合型態物件可以包含多個元素,但沒有重複的元素。例如以下 s1
s1 = {1, 1, 1, 2, 2, 3, 3, 4, 5}


s1 實際等於 s2
s2 = {1, 2, 3, 4, 5}


集合型態的物件可進行以下的運算
計算描述
x in s判斷 x 是否在 s 中
x not in s判斷 x 是否不在 s 中
s1 & s2且運算,取得 s1 與 s2 的交集
s2 | s2或運算,取得 s1 與 s2 的聯集
s1 ^ s2對稱差運算,取得 s1 與 s2 的對稱差集
s1 - s2差運算,取得 s1 與 s2 的差集
s1 < s2判斷 s1 是否為 s2 的真子集
s1 <= s2判斷 s1 是否為 s2 的子集
s1 > s2判斷 s2 是否為 s1 的真子集
s1 >= s2判斷 s2 是否為 s1 的子集
len(s)回傳 s 的元素個數
min(s)回傳 s 中的最小值, s 中的元素必須是相同型態
max(s)回傳 s 中的最大值, s 中的元素必須是相同型態


集合型態物件的運算大都有相對應的方法 (method)
方法描述
s1.intersection(s2)等於 s1 & s2
s1.union(s2)等於 s1 | s2
s1.symmetric_difference(s2)等於 s1 ^ s2
s1.difference(s2)等於 s1 - s2
s1.issubset(s2)等於 s1 <= s2
s1.issuperset(s2)等於 s1 >= s2
s1.isdisjoint(s2)判斷 s1 與 s2 是否無交集,若無交集,回傳 True
s.copy()回傳 s 的拷貝


由於 set 型態是可變的,因此有額外兩個新增與刪除元素的方法
方法描述
s.add(e)增加 e 為 s 的元素
s.remove(e)從 s 中刪除元素 e


舉例示範如下
a = {"a", "b", "c"}
print(a)
print(type(a))
print()

b = frozenset({"a", "b", "c", "1", "2"})
print(b)
print(type(b))
print()

print(a & b)
print(a | b)
print(a ^ b)
print(b - a)
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)

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


執行結果如下



中英文術語對照
集合型態set types
集合set
可變mutable
原封集合forzenset
元素element
不可變immutable
複合資料型態compound data type
方法method


內建型態




沒有留言: