1. 程式人生 > >集合的介紹及常用方法

集合的介紹及常用方法

#一:基本使用
# 1 用途: 關係運算、去重
# 2 定義方式:{}內用逗號分隔開多個元素,每一個元素都必須是不可變(即可hash)型別
#強調:
#2.1 集合內元素都必須是不可變(即可hash)型別
#2.2 集合內的元素無序

#2.3 集合內的元素不能重複

# s={1,2,'a'} #s=set({1,2,'a'})

# print(type(s))

# 單純的用集合去重,需要注意的問題是
#1、去重的目標所包含的值必須都為不可變型別

#2、去重的結果會打亂原來的順序

# names=['asb','asb','asb','wsb','wsb','egon_nb',[1,2,3]]#因為列表names中包含列表【1,2,3】不能直接用set去重會報錯

# s=set(names)#會報錯

# 3 常用操作+內建的方法
#優先掌握的操作:
#1、長度len
# pythoners={'王大炮','李二丫','陳獨秀','艾裡克斯','wxx','李修'}
# print(len(pythoners))
#2、成員運算in和not in

# print('李二丫' in pythoners)

pythoners={'王大炮','李二丫','陳獨秀','lxx','wxx','李修'}
linuxers={'陳獨秀','wxx','xxx','張全蛋'}
#3、|並集#兩個列表中的所有成員,不重複
# print(pythoners | linuxers)

# print(pythoners.union(linuxers))

#4、&交集#兩個列表中都有的成員
# print(pythoners & linuxers)
# print(pythoners.intersection(linuxers))

# print(linuxers & pythoners)

#5、-差集
# print(pythoners - linuxers)#pythoners中有但是linuxers中沒有的
# print(pythoners.difference(linuxers))
# print(linuxers - pythoners)#linuxers中有但是pythoners中沒有的
# print(linuxers.difference(pythoners))

#6、^對稱差集
# print(pythoners ^ linuxers)
# print(pythoners.symmetric_difference(linuxers))

# print(linuxers ^ pythoners)

#7、==
# s1={1,2,3}
# s2={1,2,3}
# print(s1 == s2)

#8、父集(包含關係):>,>=
# s1={1,2,3,4,5}
# s2={1,2,3}
# print(s1 > s2) # s1包含s2
# print(s1.issuperset(s2))

# print(s2.issubset(s1))

#9、子集(被包含的關係):<,<=

s1={1,2,3,4,5}
# s1.add(6)#向一個集合中新增一個元素,序列是可變型別

# print(s1)

# s1.update({4,7,8,9})

# print(s1)#將字典{4,7,8,9}更新到集合s1中

# res=s1.pop()

# print(res)#隨機刪除集合中的一個元素

# res=s1.remove(4)
# print(res)

# print(s1)#指定刪除集合中的一個值4

# s1={1,2,3,4,5}
# s1.pop()
# s1.remove(7)#如果元素不在集合當中則會報錯

# s1.discard(7) # 即便要刪除的元素不存在也不會報錯

# #二:該型別總結
# 1 存一個值or存多個值
#     可以存多個值,值都必須為不可變型別
# 2 有序or無序
# 無序
# 3 可變or不可變
# set集合是可變型別#因為能夠向其中新增元素
# s={1,2,3}
# print(id(s))
# s.add(4)
# print(s)
# print(id(s)

#=====================集合的去重==========================
# 單純的用集合去重,需要注意的問題是
#1、去重的目標所包含的值必須都為不可變型別
#2、去重的結果會打亂原來的順序