集合
集合是可变数据类型,但它里面的元素必须是不可变的数据类型。
集合无序且不重复,有着字典的外形,但内部元素不是键值对。
set1 = set({1,2,3}) set2 = {1,2,3,[2,3],{'name':'mumu'}} # 错的 print(set1) print(set2) set1 = {'mm', 'mumu', '怪大叔', '小哥哥'}
1、集合的增删查
set = {'mm', 'mumu', '怪大叔', '小哥哥'}
增
set.add('男神') # 随机无序添加 set.update('abc') # 拆分迭代,随机添加
删
set.pop() # 随机删除,有返回值 set.remove('mm') # 按元素,若没有,则会报错 # set.clear() # 清空 # del set # 删除集合
查
for i in set: print(i)
2、集合的基本运算
交集
A = {1, 2, 3, 4} B = {3, 4, 5, 6, 7} C = A.intersection(B) # {3, 4} D = A & B # {3, 4}
并集
C = A.union(B) # {1, 2, 3, 4, 5, 6, 7} D = A | B # {1, 2, 3, 4, 5, 6, 7}
反交集
C = A.symmetric_difference(B) # {1, 2, 5, 6, 7} D = A ^ B # {1, 2, 5, 6, 7}
差集
C = A.difference(B) # A独有的部分,{1, 2} D = A - B # A独有的部分,{1, 2}
集合判断
A = {1,2,3,} B = {1,2,3,4,5,6} print(A < B) print(A.issubset(B)) # 这两个相同,都是说明A是B子集。 print(B > A) print(B.issuperset(A)) # 这两个相同,都是说明B是A超集。
3、去重
li = [1, 2, 33, 33, 2, 1, 4, 5, 6, 6] set1 = set(li) li = list(set1) # [1, 2, 33, 4, 5, 6]
4、不可变的集合
s = frozenset('mumu哟') print(s,type(s)) # 无序,拆分,元素唯一,frozenset({'u', '哟', 'm'}) <class 'frozenset'> for i in s: print(i)