一.集合的特点
1. 天生去重(去掉重复值)
2. 可以增,删(准确来说,集合可以增加删除元素,但不能修改元素的值)
3. 可以方便的求交集,并集,补集
二.集合的定义
集合和字典相同,使用大括号{}来定义,但是只存储key,可以将set理解为只存储key的字典;集合是无序的,输出的元素顺序不定
# 集合的定义 set1 = {"xiaoming", 12, 12, "man", (1, )} print(set1) print(len(set1)) print(type(set1)) 结果如下 {(1,), 12, 'xiaoming', 'man'} 4 <class 'set'>
三.集合元素的添加和删除
set2 = {1, 2, 3, 4, 5, 6} # 添加集合元素 set2.add(7) # 添加一个元素7 print(set2) set2.update([9, 10]) # 一次添加多个元素 set2.update((11, 12)) # 一次添加多个元素 print(set2) # 删除集合元素 set2.remove(9) # 删除元素9 set2.discard(10) # 删除元素10 print(set2) 输出结果如下 {1, 2, 3, 4, 5, 6, 7} {1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12} {1, 2, 3, 4, 5, 6, 7, 11, 12}
四.集合的运算
# 集合的交集(相同的元素) set1 = {"xiaoming", 12, 12, "man", (1, )} set2 = {1, 2, 3, 4, 5, 6} set3 = {2, 4, 6, 8} print(set2.intersection(set3)) # 打印set2和set3的交集 print(set2 & set3) # &符号也是求交集 print(set2.isdisjoint(set3)) # 判断set2和set3是否有交集,有交集返回False;没有返回True print(set1.isdisjoint(set2)) # 判断set1和set2是否有交集,True 输出结果如下 {2, 4, 6} {2, 4, 6} False True
set2 = {1, 2, 3, 4, 5, 6} set3 = {2, 4, 6, 8} # 集合的并集(合并) print(set2.union(set3)) # 打印结合set2和set3的并集 print(set2 | set3) # |符号也可以求并集 输出结果如下 {1, 2, 3, 4, 5, 6, 8} {1, 2, 3, 4, 5, 6, 8}
set2 = {1, 2, 3, 4, 5, 6} set3 = {2, 4, 6, 8} # 集合的补集 print(set2.difference(set3)) # 打印set3集合有,set2集合没有的元素 print(set2 - set3) # set3-set2 也可以求补集 print(set3.difference(set2)) # 打印set3集合有,set2集合没有的元素 print(set3 - set2) # set3-set2 也可以求补集 输出结果如下 {1, 3, 5} {1, 3, 5} {8} {8}
set2 = {1, 2, 3, 4, 5, 6} set3 = {2, 4, 6, 8} # 对称差集 print(set2.symmetric_difference(set3)) # set2有的set3没有的元素 加上 set2没有set3有的元素 print(set2 ^ set3) # ^符号也可以求对称差集 # 判断一个集合是否是另一个集合的子集 print(set2.issubset(set3)) # set2是否是集合set3的子集 print(set2.issuperset(set3)) # set2是否包含set3 输出结果如下 {1, 3, 5, 8} {1, 3, 5, 8} False False