型態 | 描述 |
---|---|
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 |
沒有留言:
張貼留言