集合 (set)
1、由不同的元素組成,用{ }大括號括起來,用,逗號隔開
2、無序的
3、集合中的元素必須是比可變類型
4、集合會自動去重
例如:s = {1,2,3,4,5,6} #這就是一個集合
5、合集是可變的 但是可以通過參數frozenset變成不可變的集合
1
2
3
4
|
s = { 1 , '2' , 3 , 4 , 5 , 6 } print (s) #{'2', 1, 3, 4, 5, 6} a = frozenset (s) #不可變 print (a) #frozenset({'2', 1, 3, 4, 5, 6}) |
一 、合集的一些常用命令
1、set 定義合集
1
2
|
s = set ( 'adam' ) print (s) #{'m', 'a', 'd'} |
可以看到輸出結果是 亂序的 而且 已經去重了,并且它已經把原來的字符串 打散到了最小單位
2、add 添加元素
1
2
3
4
5
|
s = { 1 , 2 , 3 , 4 , 5 , 6 } s.add( '3' ) #添加了一個str類型的 3 print (s) #{1, 2, 3, 4, 5, 6, '3'} s.add(( '4' , 'a' , 'b' , 'c' )) print (s) #{1, 2, 3, 4, 5, 6, ('4', 'a', 'b', 'c'), '3'} |
1、如果添加的是的集合里面原本就含有的元素,那么就會被自動去重
2、被添加的元素是 被亂序放入的 也就是說集合本身是亂序的
3、如果被添加的是 多個元素 那么 集合會把他們視為一個元素 打包插入,只有元祖可以插入,列表和字典不行
3、clear 清空
1
2
3
|
s = { 1 , 2 , 3 , 4 , 5 , 6 } s.clear() print (s) #set() |
4、pop 隨機刪除一個元素
1
2
3
|
s = { 1 , 2 , 3 , 4 , 5 , 6 , 7 } s.pop() print (s) #{2, 3, 4, 5, 6, 7} |
5、remove 指定刪除
1
2
3
|
s = { 1 , 2 , 3 , 4 , 5 , 6 } s.remove( 3 ) print (s) #{1, 2, 4, 5, 6} |
PS:找不到匹配要刪除的字符就會報錯
6、discard 指定刪除
1
2
3
|
s = { 1 , 2 , 3 , 4 , 5 , 6 } s.discard( 7 ) print (s) #{1, 2, 3, 4, 5, 6} |
PS:找不到匹配要刪除的字符不會報錯
二、關系運算
1、交集 找到兩個集合相同的元素
1
2
3
4
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , '2' , 3 , 'm' , 'd' } print (s&s1) #{1, 3, 'd', 'm'} print (s.intersection(s1)) #{1, 3, 'd', 'm'} |
& 是運算符號, intersection 是運算命令他們的結果是一樣的
2、并集 合并兩個集合
1
2
3
4
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , '2' , 3 , 'm' , 'd' } print (s|s1) #{1, 2, 3, 'm', '2', 'd', 'a'} print (s.union(s1)) #{1, 2, 3, 'm', '2', 'd', 'a'} |
| 豎是運算符號,union 是運算命令他們的結果是一樣的
3、差集 保留前者與后者不同的元素 去除相同的元素
1
2
3
4
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , '2' , 3 , 'm' , 'd' } print (s - s1) #{'a', 2} print (s1.difference(s)) #{'2'} |
- 減號是運算符號,difference 是運算命令他們的結果是一樣的
由于前后兩次 兩個 集合被比較的 關系對調了 所以 結果兩次輸出的結果也不同
4、交叉補集 只保留兩者不同的部分
1
2
3
4
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , '2' , 3 , 'm' , 'd' } print (s ^ s1) #{2, '2', 'a'} print (s1.symmetric_difference(s)) #{2, '2', 'a'} |
^ 是運算符號,symmetric_difference是運算命令他們的結果是一樣的
5、isdisjoint 判斷是否有交集返回布爾值
1
2
3
4
5
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , '2' , 3 , 'm' , 'd' } s2 = { 15 , 22 } print (s1.isdisjoint(s2)) #True print (s1.isdisjoint(s)) #False |
沒有交集就返回 True 有交集就返回False
6、issubset判斷后者是否包含前者 返回布爾值
1
2
3
4
5
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , 2 , 3 , 'm' , 'd' } s2 = { 15 , 22 , 1 } print (s1.issubset(s2)) #False print (s1.issubset(s)) #True |
如果后者包含前者 則返回 True 如果后者不完全包含前者 則返回 False
7、issuperset判斷前者是不是完全包含后者,返回布爾值
1
2
3
4
5
6
7
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , 2 , 3 , 'm' , 'd' } s2 = { 15 , 22 , 1 } s3 = { 1 , 2 , 3 , 'm' , 'a' , 'd' } print (s.issuperset(s2)) #False print (s.issuperset(s1)) #True print (s.issuperset(s3)) #True |
前者完全包含后者 則 返回 True 沒有完全包含后者則返回False 前后兩者相等也是True
8、update 更新
1
2
3
4
5
6
7
8
9
10
|
s = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s3 = { 1 , 2 , 3 , 'm' , 'a' , 'd' } s1 = { 1 , 2 , 3 , 'm' , 'd' } s2 = { 15 , 22 , 1 } s.update(s3) print (s) #{1, 2, 3, 'a', 'm', 'd'} print (s3) #{1, 2, 3, 'd', 'm', 'a'} s1.update(s2) print (s1) #{1, 2, 3, 'm', 22, 'd', 15} print (s2) #{1, 22, 15} |
把后者的元素 更新到前者內
PS:
訪問方式
直接 訪問:數字
順序訪問:字符串、列表、元祖
映射(keys):字典
字典的查詢速度最快 但是字典占內存會比較高
存放元素個數:
容器類(存放多個值):列表、元祖、字典
原子類(只能存放一個值):數字、字符串
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!
原文鏈接:https://blog.csdn.net/weixin_56164201/article/details/121016046