python中的集合
集合
集合是一个无序,不重复元素的序列(自动去重)
set1 = set()#定义集合 print(type(set1)) set2 = {'abc','abc','cd','abd','ac','dvd'}#定义集合,不能为空,否则定义的是字典 print(type(set2)) print(set2) 输出: <class 'set'> <class 'set'> {'abc', 'dvd', 'abd', 'ac', 'cd'}
集合中的运算
#'|'取两个集合中的所有元素 set2 = {'abc','abc','cd','abd','ac','dvd'} set1 = {'abcd','abcf','cd','abd','acv','dvd'} print(set2|set1)#合集 输出: {'abc', 'cd', 'abcf', 'abcd', 'acv', 'ac', 'abd', 'dvd'}
#'-' set2 = {'abc','abc','cd','abd','ac','dvd'} set1 = {'abcd','abcf','cd','abd','acv','dvd'} print(set1-set2)#集合中set1包含而set2中不包含的元素 print(set2-set1)#集合中set2包含而set1中不包含的元素 输出: {'abcf', 'acv', 'abcd'} {'abc', 'ac'}
#'&'取交集 set2 = {'abc','abc','cd','abd','ac','dvd'} set1 = {'abcd','abcf','cd','abd','acv','dvd'} print(set1&set2)#取两个集合同时都包含的元素,交集 输出: {'abd', 'dvd', 'cd'}
#'^'取两个集合中不同时含有的元素 set2 = {'abc','abc','cd','abd','ac','dvd'} set1 = {'abcd','abcf','cd','abd','acv','dvd'} print(set1^set2)#取两个集合不同时包含的元素 输出: {'abc', 'ac', 'acv', 'abcd', 'abcf'}
集合中的基本操作,添加,如果添加的元素已经存在,则不进行任何操作
set1 = {'abcd','abcf','cd','abd','acv','dvd'} set1.add('adf')#添加'adf' set1.update({'abcde','cde'})#可以添加多个元素 print(set1) 输出: {'adf', 'abcde', 'abd', 'cde', 'acv', 'abcd', 'dvd', 'cd', 'abcf'}
移除元素:
set1 = {'abcd','abcf','cd','abd','acv','dvd'} set1.remove('abcd')#移除元素 # set1.remove('abcda')#移除不存在的元素,会报错 set1.discard('abcda')#移除不存在的元素,不会报错 print(set1) 输出: {'cd', 'abcf', 'abd', 'acv', 'dvd'} set1.pop()#随机删除一个元素
清空集合,计算集合元素个数:
set1 = {'abcd','abcf','cd','abd','acv','dvd'} print(len(set1))#返回集合的长度 set1.clear()#清空集合 print(set1)#输出为空集合
输出: 6 set()
补充写法:
s1={1,2,3,4,5} s2={2,3,4,5,6} s3={4,5,6,7,8} # s1.update(s2)#把s2 合到s1中 print('取并集方式1',s1.union(s2)) print('取并集方式2',s1|s2) print('取交集方式1',s3.intersection(s1)) print('取交集方式2',s1&s3) #差集取运算中前面的集合(下面实例为s1在前面)中存在而后面集合(下面实例为s2在后面)中不存在的元素 print('取差集方式1',s1-s2) print('取差集方式2',s1.difference(s2)) #对称差集,两个集合中不同时含有的元素 print('取对称差集方式1',s1^s2) print('取对称差集方式2',s1.symmetric_difference(s2))