Python學(xué)習(xí)之集合set
集合 (set)
1、由不同的元素組成,用{ }大括號(hào)括起來,用,逗號(hào)隔開
2、無序的
3、集合中的元素必須是比可變類型
4、集合會(huì)自動(dòng)去重
例如:s = {1,2,3,4,5,6} #這就是一個(gè)集合
5、合集是可變的 但是可以通過參數(shù)frozenset變成不可變的集合
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 定義合集
s = set('adam')
print(s) #{'m', 'a', 'd'}
可以看到輸出結(jié)果是 亂序的 而且 已經(jīng)去重了,并且它已經(jīng)把原來的字符串 打散到了最小單位
2、add 添加元素
s = {1,2,3,4,5,6}
s.add('3') #添加了一個(gè)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、如果添加的是的集合里面原本就含有的元素,那么就會(huì)被自動(dòng)去重
2、被添加的元素是 被亂序放入的 也就是說集合本身是亂序的
3、如果被添加的是 多個(gè)元素 那么 集合會(huì)把他們視為一個(gè)元素 打包插入,只有元祖可以插入,列表和字典不行
3、clear 清空
s = {1,2,3,4,5,6}
s.clear()
print(s) #set()
4、pop 隨機(jī)刪除一個(gè)元素
s = {1,2,3,4,5,6,7}
s.pop()
print(s) #{2, 3, 4, 5, 6, 7}
5、remove 指定刪除
s = {1,2,3,4,5,6}
s.remove(3)
print(s) #{1, 2, 4, 5, 6}
PS:找不到匹配要?jiǎng)h除的字符就會(huì)報(bào)錯(cuò)
6、discard 指定刪除
s = {1,2,3,4,5,6}
s.discard(7)
print(s) #{1, 2, 3, 4, 5, 6}
PS:找不到匹配要?jiǎng)h除的字符不會(huì)報(bào)錯(cuò)
二、關(guān)系運(yùn)算
1、交集 找到兩個(gè)集合相同的元素
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'}
& 是運(yùn)算符號(hào), intersection 是運(yùn)算命令他們的結(jié)果是一樣的
2、并集 合并兩個(gè)集合
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'}
| 豎是運(yùn)算符號(hào),union 是運(yùn)算命令他們的結(jié)果是一樣的
3、差集 保留前者與后者不同的元素 去除相同的元素
s = {1,2,3,'m', 'a', 'd'}
s1 ={1,'2',3,'m', 'd'}
print(s - s1) #{'a', 2}
print(s1.difference(s)) #{'2'}
- 減號(hào)是運(yùn)算符號(hào),difference 是運(yùn)算命令他們的結(jié)果是一樣的
由于前后兩次 兩個(gè) 集合被比較的 關(guān)系對(duì)調(diào)了 所以 結(jié)果兩次輸出的結(jié)果也不同
4、交叉補(bǔ)集 只保留兩者不同的部分
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'}
^ 是運(yùn)算符號(hào),symmetric_difference是運(yùn)算命令他們的結(jié)果是一樣的
5、isdisjoint 判斷是否有交集返回布爾值
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判斷后者是否包含前者 返回布爾值
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判斷前者是不是完全包含后者,返回布爾值
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 更新
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}
把后者的元素 更新到前者內(nèi)
PS:
訪問方式
直接 訪問:數(shù)字
順序訪問:字符串、列表、元祖
映射(keys):字典
字典的查詢速度最快 但是字典占內(nèi)存會(huì)比較高
存放元素個(gè)數(shù):
容器類(存放多個(gè)值):列表、元祖、字典
原子類(只能存放一個(gè)值):數(shù)字、字符串
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信