【python基礎】集合類型
阿新 • • 發佈:2018-07-09
linux code 課程 xxd hone 插入元素 close 1.3 格式
集合類型:
作用: --> 關系運算(交集,並集,差集)
--> 去重(有局限性)
定義方法:set()
linuxers = {1,1.1,‘a‘,(1,2,3)} ##集合內的值,只能為不可變類型,比如int,str,float,tuple
print(type(linuxers))
<class ‘set‘>
需要掌握:
1、集合的定義方法
定義方法類似於字典,{}內,以逗號分割,但不同於字典之處不是key:varual格式,集合內的元素一定是不可變類型
1 pythoners = set({‘alexdsb‘,‘egon‘,‘lxxdsb‘,‘oldboy‘,‘吳三江‘,‘張鐵蛋‘}) 2 3 print(pythoners) 4 5 pythoners = {‘alexdsb‘,‘egon‘,‘lxxdsb‘,‘oldboy‘,‘吳三江‘,‘張鐵蛋‘} 6 7 print(pythoners)
2、集合的運算(&,-,|,^,)
例題:以下是報名python和linux的學員信息,請完成對一下兩個集合的運算
1.1、求既報名linux又包名python的學員有哪些=》即求兩個集合體的共同部分,稱之為交集 print(pythoners & linuxers) print(pythoners.intersection(linuxers)) 1.2、求只報名python,沒有報名linux的學員有哪些=》即集合pythoners減去linuxers,稱之為差集 print(pythoners - linuxers) print(pythoners.difference(linuxers)) 1.3、求只報名linux,沒有報名python的學員有哪些 print(linuxers - pythoners) print(linuxers.difference(pythoners)) 1.4 求老男孩所有報名的學生姓名->即求兩個集合體的總和,稱之為並集 print(pythoners | linuxers) print(pythoners.union(linuxers)) 1.5 求沒有同時報名兩門課程的學生姓名->稱之為對稱差集 print(pythoners ^ linuxers) print(pythoners.symmetric_difference(linuxers))
3、集合的成員運算(in / not in)
1 a = {1,2,3} 2 print(1 in a) 3 print(1 not in a)
4、集合的含於被含於的關系運算(>,>=,<=,<)
a = {1,2,3} b = {1,2} print(a >= b) ##a包含b print(b <= a) ##b含於a print(b < a) print(a > b)
5、集合的去重以及集合去重的局限性
** 去重:去重是集合的特性
a = {1,2,3,4,1,1} ##去重會將1去除,只保留一個 print(a) {1, 2, 3, 4}
局限性:
1、不能保證原來的順序(因為set是不依賴索引的,所以每次打印順序不一樣,所以集合是無序的)
2、不能針對可變類型去重(list,dict等可變類型不能去重)
6、集合的內置方法(添加,刪除)元素,add,update,pop,remove,discard
add 添加元素 s={1,2,3} s.add(4) ##在集合後面插入元素 s.add(‘hello‘) print(s) ##{1, 2, 3, 4, ‘hello‘} update 添加元素 s1={1,2,3,4,5} s1.update({3,4,5,6,7}) ##調用for循環逐個添加 s1.update(‘hello‘) ##調用for循環,添加h e l l o 字符串 s1.add(‘aaa‘) ##添加字符串‘aaa‘到s1 print(s1) ##{1, 2, 3, 4, 5, 6, 7, ‘e‘, ‘l‘, ‘o‘, ‘h‘, ‘aaa‘} pop 隨機刪除集合中的元素 s = {1,2,3} s.pop() remove 指定元素刪除,不存在則報錯 s = {1,2,3} s.remove(1) ##存在則刪除 s.remove(5) ##不存在報錯 discard 指定元素刪除,不存在也不報錯 s = {1,2,3} s.discard(1) ##存在則刪除 s.discard(5) ##不存在也不報錯 info.clear() ##清空集合 info.copy() ##復制一個集合
# 循環
s={‘egon‘,‘alex‘,‘wxx‘,‘lxx‘} for item in s: print(item)
# 計算長度
s={‘egon‘,‘alex‘,‘wxx‘,‘lxx‘} print(len(s))
去重的兩種需求:
1,全部為不可變類型,並且去重後不要求順序
info = {1,1,2,3,2,‘yexinlei‘,2.1,‘aaa‘,(‘oldboy‘,‘egon‘)} info=set(info) print(info)View Code
2,包含可變類型(list,dict)並且要求保證去重後保留順序
info=[ {‘name‘:‘egon‘,‘age‘:18}, {‘name‘:‘alex‘,‘age‘:73}, {‘name‘:‘egon‘,‘age‘:18}, {‘name‘: ‘lxx‘, ‘age‘: 19}, {‘name‘:‘egon‘,‘age‘:18}, {‘name‘:‘lxx‘,‘age‘:19}, ] l=[] for dic in info: if dic not in l: ##判斷不存在重復則添加 l.append(dic) info=l ##重新賦值給info print(info)View Code
set()
【python基礎】集合類型