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