10_set集合
一、集合类型
集合是一组无序排列的可哈希的值(可哈希的值->不可变),集合成员可以做字典中的键。但集合本身是不可哈希的。
集合是无序没有索引,也没有像字典的key,所以集合不能更改元素。只能增删查(print、for循环)
集合的作用:
- 去重复元素
- 关系测试:交集、并集、差集、反交集、超集
二、集合的操作
1.集合的创建
#set 的创建 set1 = set('abcde') #def __init__(self, seq=()): 接受一个可迭代对象 set2 = {1,2,7,3,8,4,5,6} #直接赋值 print(set1) print(set2)
2.去重
#利用set去重 li = [2,4,1,3,4,5,6,7,3,3] set1 = set(li) li = list(set1) print(li)
3.集合的增
3.1添加一个元素方法
#添加一个元素使用set.add() set1 = {1,2,7,3,8,4,5,6} set1.add('a') #Add an element to a set. print(set1) #{1, 2, 3, 4, 5, 6, 7, 8, 'a'}
3.2迭代添加元素.接受一个可迭代对象,字符串、元组、列表、字典
#迭代添加 s1 = '中国' set1 = {1,2,7,3,8,4,5,6} set1.update(s1) #接受一个可迭代对象。把每个元素拆开,添加到set中 print(set1)
4.集合的删
4.1删除一个元素从set中
#删除一个元素从set中 set1 = {1,2,7,3,8,4,5,6,'a'} set1.remove('a') #Remove an element from a set print(set1)
4.2随机删除元素
#随机删,并返回被删除元素 set1 = {1,2,7,3,8,4,5,6,'a'} set2 = set1.pop() #Remove and return an arbitrary set element. print(set2) print(set1)
5.集合的其他操作
#1.print打印 set1 = {1,2,7,3,8,4,5,6,'a'} print(set1) #2.for循环 for i in set1: print(i) #3.in not in print('a' in set1) #4.len()获取长度 print('集合长度:%d'%(len(set1)))
三、关系测试
交集
交集使用 & 或 intersection()
set1 = {1,2,3,4,5,6,7} set2 = {3,4,5,6,7,8,9} set3 = set1 & set2 set3 = set1.intersection(set2) print(set3) #{3, 4, 5, 6, 7}
并集
并集: | 或者 union
1 set1 = {1,2,3,4,5,6,7} 2 set2 = {3,4,5,6,7,8,9} 3 4 set3 = set1 | set2 5 set3 = set1.union(set2) 6 print(set3) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
差集
差集:两者各自特有的部分。使用 - 或者 difference()
#差集 : 两者做差,求各自特有的部分;该集合中的元素,只属于某一个集合,不属于另外那个集合 set1 = {1,2,3,4,5,6,7} set2 = {3,4,5,6,7,8,9} #两种方式 - 或者 difference set3 = set1 - set2 #两者做差,求各自特有的部分 set4 = set2 - set1 #两者做差,求各自特有的部分 set3 = set1.difference(set2) set4 = set2.difference(set1) print(set3)#{1, 2} #set1特有的部分 print(set4)#{8, 9} #set2 特有的部分
反交集
反交集:^ 或者 symmetric_difference();该集合元素只能属于set1或者set2,不能同时set1又属于set2两个集合。->抛去两个集合相交的部分,把两者剩余的组成一个新集合。
1 #反交集:抛去他俩相同的部分,再组成一个新集合 2 set1 = {1,2,3,4,5,6,7} 3 set2 = {3,4,5,6,7,8,9} 4 5 set3 = set1 ^ set2 6 set3 = set1.symmetric_difference(set2) 7 8 print(set3) #{1, 2, 8, 9} 1,2是set1特有,8,9是set2特有
子集与超集
1 #子集与超集 : 检测某个集合是否是其他集合的超集或子集 2 #成立条件:set2必须得包含set1,并且含有set1没有的元素。set1不含有set2中的元素 3 set1 = {1,2,3,4,5,6,7} 4 set2 = {3,4,5,6,7,8,9} 5 set3 = {4,3} 6 7 print(set2.issuperset(set1)) #False >= 8 print(set1.issuperset(set2)) #False 9 print(set2.issuperset(set3)) #True 10 print(set3.issubset(set2)) #True <= set3是set2的子集