037 集合型別及操作
阿新 • • 發佈:2020-12-13
目錄
一、概述
- 集合型別定義
- 集合操作符
- 集合處理方法
- 集合型別應用場景
二、集合型別定義
集合是多個元素的無序組合
-
集合型別與數學中的集合概念一致
-
集合元素之間無序,每個元素唯一,不存在相同元素
-
集合元素不可更改,不能是可變資料型別
-
集合用大括號 {} 表示,元素間用逗號分隔
-
建立集合型別用 {} 或 set()
-
建立空集合型別,必須使用set()
A = {"python", 123, ("python", 123)} # 使用{}建立集合
A
{('python', 123), 123, 'python'}
B = set("pypy123") # 使用set()建立集合
B
{'1', '2', '3', 'p', 'y'}
C = {"python", 123, "python", 123}
C
{123, 'python'}
三、集合操作符
3.1 集合間操作
3.2 6個操作符
操作符及應用 | 描述 |
---|---|
S | T | 返回一個新集合,包括在集合S和T中的所有元素 |
S - T | 返回一個新集合,包括在集合S但不在T中的元素 |
S & T | 返回一個新集合,包括同時在集合S和T中的元素 |
S ^ T | 返回一個新集合,包括集合S和T中的非相同元素 |
S <= T或S < T | 返回True/False,判斷S和T的子集關係 |
S >= T或S > T | 返回True/False,判斷S和T的包含關係 |
3.3 4個增強操作符
操作符及應用 | 描述 |
---|---|
S |= T | 更新集合S,包括在集合S和T中的所有元素 |
S -= T | 更新集合S,包括在集合S但不在T中的元素 |
S &= T | 更新集合S,包括同時在集合S和T中的元素 |
S ^= T | 更新集合S,包括集合S和T中的非相同元素 |
A = {"p", "y", 123}
B = set("pypy123")
A - B
{123}
A & B
{'p', 'y'}
A ^ B
{'1', 123, '2', '3'}
B - A
{'1', '2', '3'}
A | B
{'1', 123, '2', '3', 'p', 'y'}
四、集合處理方法
操作函式或方法 | 描述 |
---|---|
S.add(x) | 如果x不在集合S中,將x增加到S |
S.discard(x) | 移除S中元素x,如果x不在集合S中,不報錯 |
S.remove(x) | 移除S中元素x,如果x不在集合S中,產生KeyError異常 |
S.clear() | 移除S中所有元素 |
S.pop() | 隨機返回S的一個元素,更新S,若S為空產生KeyError異常 |
S.copy() | 返回集合S的一個副本 |
len(S) | 返回集合S的元素個數 |
x in S | 判斷S中元素x,x在集合S中,返回True,否則返回False |
x not in S | 判斷S中元素x,x不在集合S中,返回False,否則返回True |
set(x) | 將其他型別變數x轉變為集合型別 |
A = {"p", "y", 123}
for item in A:
print(item, end="")
123yp
五、集合型別應用場景
5.1 包含關係比較
"p" in {"p", "y" , 123}
True
{"p", "y"} >= {"p", "y" , 123}
False
5.2 資料去重:集合型別所有元素無重複
ls = ["p", "p", "y", "y", 123]
s = set(ls) # 利用了集合無重複元素的特點
s
{123, 'p', 'y'}
lt = list(s) # 還可以將集合轉換為列表
lt
[123, 'y', 'p']
六、小結
- 集合使用{}和set()函式建立
- 集合間操作:交(&)、並(|)、差(-)、補(^)、比較(>=<)
- 集合型別方法:.add()、.discard()、.pop()等
- 集合型別主要應用於:包含關係比較、資料去重