Python除了List、Tuple、Dict等经常使用数据类型外,还有一种数据类型叫作集合(set),集合的最大特色是:集合里边的元素是不可重复的而且集合内的元素仍是无序的,因此通常状况下集合经常使用的两个场景是:1.去重(如:列表去重);2.关系测试(如:取交集、取并集、取差集等)python
1)集合包含一组无序的对象,可使用set()函数来像下边的方式同样来建立集合ide
#!/usr/bin/env python # -*-coding:UTF-8 -*- #建立一个数值集合 set1 = set([1,2,3,4]) #建立一个字符集合 注意:从输出结果中咱们会看到l只出现了一次 set2 = set("HelloWorld!") print('set1 %s' % set1) print('set2 %s' % set2) '''运行结果 set1 {1, 2, 3, 4} set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'} '''
2)去重,便可能在一些特殊的场景须要用到,实现去除掉列表中的重复元素函数
#!/usr/bin/env python # -*-coding:UTF-8 -*- #列表去重比较简单 list1 = [3,3,3,4,5,3] set1 = set(list1) print("list1去重后的set集合:",set1) #将如中后的集合在转化成一个新列表 new_list = [i for i in set1] print("list1去重后的list列表:",new_list) '''运行结果 list1去重后的set集合: {3, 4, 5} list1去重后的list列表: [3, 4, 5] '''
3)关系测试,即一些集合的最基本操做,如集合取交集、取并集、取差集、判断一个集合是否是另外一个集合的子集或者父集等。测试
#!/usr/bin/env python # -*-coding:UTF-8 -*- set1 = set([1,2,3,4,5]) set2 = set([3,4,5,6,7]) #取交集 set3 = set1.intersection(set2) # set3 = set1 & ste2 #取交集,与intersection()效果相同 print("set1和set2的交集为:",set3) #取并集 set4 = set1.union(set2) #set4 = set1 | set2 #取并集,与union()效果相同 print("set1和set2的交集为:",set4) #取差集 这个地方要稍稍注意一下,防止进坑 set5 = set1.difference(set2) #set5 = set1 - set2 #取差集 ,与difference()效果相同 print("set1与set2的差集为:",set5) set6 = set2.difference(set1) print("set2与set1的差集为:",set6) #对称差集 -----即去掉两个集合的共同的部分 set7 = set1.symmetric_difference(set2) #set7 = set1 ^ set2 #对称差集, 与symmetric_difference()效果相同 print("去掉两个集合的共同的部分:",set7) #判断是不是set1是不是set2的子集 flag1 = set1.issubset(set2) print("print(判断是不是set1是不是set2的子集):",flag1) #判断是不是set1是不是set2的父集 flag2 = set1.issuperset(set2) print("判断是不是set1是不是set2的父集:",flag2) '''运行结果以下: set1和set2的交集为: {3, 4, 5} set1和set2的交集为: {1, 2, 3, 4, 5, 6, 7} set1与set2的差集为: {1, 2} set2与set1的差集为: {6, 7} 去掉两个集合的共同的部分: {1, 2, 6, 7} print(判断是不是set1是不是set2的子集): False 判断是不是set1是不是set2的父集: False '''
4)集合的一些其它基本操做对象
#!/usr/bin/env python # -*-coding:UTF-8 -*- #输出集合中的元素 #注意集合与列表和元组不一样,集合是无序的,因此没法经过数字进行索引获取某一个元素的值 set1 = set([1,2,3,4]) for i in set1: print (i) #向集合中添加一个元素 set1.add(5) print("向集合中添加一个元素5后:",set1) #删除一个元素 set1.remove(1) print("从集合中删除元素1后:",set1) #计算集合的长度 l = len(set1) print("集合的长度为:",l) #判断某个元素是否在集合内 flag1 = 2 in set1 print("判断元素2是否在集合内:",flag1) #断某个元素是否不在集合内 flag2 = 3 not in set1 print("判断元素3是否不在集合内:",flag2) #对集合进行一次浅复制 set2 = set1.copy() print("对集合进行一次浅复制:",set2) '''运行结果以下: 1 2 3 4 向集合中添加一个元素5后: {1, 2, 3, 4, 5} 从集合中删除元素1后: {2, 3, 4, 5} 集合的长度为: 4 判断元素2是否在集合内: True 判断元素3是否不在集合内: False 对集合进行一次浅复制: {2, 3, 4, 5} '''
以上是集合(set)的一些比较经常使用操做的示例,对于集合的一些其它操做,这里就不在一一举例说明了。索引