一、set集合的创建
set_list = set([1,3,5,7,9]) #创建一个数值集合
set_str = set("world") #创建一个唯一字符的集合
二、set{}集合的特点:
1、set集合是无序的,跟字典一样,都是无序的,因为是无序的,所有无法通过用索引去求值
1 >>>dic={"k1":1,"k2":2,"k3":3} 2 >>>print(dic) 3 #可以看到字典是倒着输出的,并没有严格按照顺序输出 4 {'k3': 3, 'k2': 2, 'k1': 1} 5 6 >>>list1=[11,22,33,33,11,66,55,99] 7 >>list2=set(a) 8 >>print(list2) 9 #可以看到list2也是并没有严格按照顺序输出 10 {33, 66, 99, 11, 22, 55}
2、set{}集合是去重复的
1 >>>list1=[77,22,33,33,11,66,55,88,77,] 2 >>>list2=set(list1) 3 >>>print(list2) 4 {33, 66, 11, 77, 22, 55, 88} 5 6 >>>str_1="aabbccddfakiclgm" 7 >>>str_2=set(str_1) 8 >>>print(str_2) 9 {'c', 'd', 'l', 'm', 'a', 'g', 'i', 'f', 'b', 'k'}
三、set集合中的一些常用方法
1、add()方法,就是添加一些元素
1 str1=set("bruce") 2 str1.add("supper") 3 print(str1) 4 5 #输出以下结果 6 {'c', 'e', 'r', 'u', 'b', 'supper'}
2、clear() 方法,就是清空集合里面的元素
1 str1=set([1,2,3,4]) 2 str1.clear() 3 print(str1) 4 5 #输出结果 6 set()
3、copy()方法,就是拷贝的意思
1 str3=set([1,2,3,4,5]) 2 str4=str3.copy() 3 print(str4) 4 print(str3) 5 6 #输出以下结果,str4就是str3的浅拷贝 7 {1, 2, 3, 4, 5} 8 {1, 2, 3, 4, 5}
4、difference()方法就是找出两个集合的不同元素,相当于求差集
1 str2=set([1,2,3,4]) 2 str3=set([1,2,3,4,5]) 3 4 #用difference方法后可以看到两个集合的差集 5 {5}
5、difference_update()方法就是找出两个集合的差集,并把差集更新为第一个集合
1 >>>str2=set([1,2,3,4]) 2 >>>print(str2) 3 #输出str2 4 {1, 2, 3, 4} 5 6 7 >>>str3=set([1,2,3,4,5]) 8 >>>print(str3) 9 #输出str3 10 {1, 2, 3, 4, 5} 11 12 >>>str3.difference_update(str2) 13 >>>print(str3) 14 #先找出str3和str2的不同,即为下面的{5},然后把两个集合的差集赋值给str3 15 {5}
6、discard()方法,就是用来移除集合里面指定的元素
>>>str3=set([1,2,3,4,5]) >>>str3.discard(4) >>>print(str3) #可以看到结果中,集合把元素4移除了 {1, 2, 3, 5}
7、intersection()方法,就是求两个集合的交集
1 a=set("hello,world") 2 b=set("hello") 3 c=a.intersection(b) 4 print(c) 5 #输出结果,得到集合a,b的交集c 6 {'h', 'l', 'e', 'o'} 7 8 9 set1={1,3,4,5,6} 10 set2={1,4,56,7} 11 set3=set1.intersection(set2) 12 print(set3) 13 #输出结果,得到集合set1,set2的交集set3 14 {1, 4}
8.intersection_update()方法,就是求两个集合的交集并把结果更新赋值给第1个集合
1 set1={1,3,4,5,6} 2 set2={1,4,56,7} 3 set1.intersection_update(set2) 4 5 print(set1) 6 7 #输出结果,可以看到set1变为两者的交集 8 {1, 4}
9、isdisjoint()判断两个集合间有没有交集,如果没有就返回 True,有就返回False
1 >>> set1={"",3,2,4} 2 >>> set2={"",""} 3 >>> set1.isdisjoint(set2) 4 False 5 >>> set3={1,3,4,5,6} 6 >>> set4={2,7,8} 7 >>> set3.isdisjoint(set4) 8 True
10、issubset()方法判断这个集合是不是别的集合的子集,是则True,否则False
1 >>> help(set.issubset) 2 Help on method_descriptor: 3 4 issubset(...) 5 Report whether another set contains this set. 6 7 >>> set5={1,2} 8 >>> set6={1,2,3,4,5} 9 >>> set5.issubset(set6) 10 True
11、issuperset()方法就是判断这个集合是不是别的集合的父集合
1 >>> set5={1,2} 2 >>> set6={1,2,3,4,5} 3 >>> set5.issubset(set6) 4 #这里看到set5是set6的子集合 5 True 6 >>> set5.issuperset(set6) 7 #这里判断set5不是set6的父集合,返回False 8 False 9 >>> set6.issuperset(set5) 10 #这里判断set5是set6的父集合,返回True 11 True
12、pop()方法,就是随机移除集合里面的一个元素,如果集合是空的,就会报错
1 >>> set_1={1,2,3,4} 2 >>> set_1.pop(1) 3 #以下可以看到这个方法里面不能传参数,否则会报错 4 Traceback (most recent call last): 5 File "<pyshell#31>", line 1, in <module> 6 set_1.pop(1) 7 TypeError: pop() takes no arguments (1 given) 8 >>> set_1.pop() 9 1 10 >>> set_1.pop() 11 2 12 >>> set_1.pop() 13 3 14 >>> set_1.pop() 15 4 16 >>> print(set_1) 17 set() 18 >>> set_1.pop() 19 #当集合里面为空的时候,再去pop就会报错 20 Traceback (most recent call last): 21 File "<pyshell#37>", line 1, in <module> 22 set_1.pop() 23 KeyError: 'pop from an empty set'
13、remove()方法,就是删除集合里面指定的元素,当集合里面不存在要移除的元素时会报错,而discard()方法就不会报错,这是它们的区别
1 >>> s={1,2,3,4,5} 2 >>> s.discard(6) 3 >>> print(s) 4 {1, 2, 3, 4, 5} 5 >>> s.remove(4) 6 >>> print(s) 7 {1, 2, 3, 5} 8 >>> s.remove(6) 9 Traceback (most recent call last): 10 File "<pyshell#46>", line 1, in <module> 11 s.remove(6) 12 KeyError: 6
14、symmetric_difference()方法求对称交集,把两个集合的互为不同的元素放到一起,会返回一个值
>>> s1={1,2,3,4,5,7,8} >>> s2={11,22,3,4,5,77,88} #可以看到两个集合的对称交集会返回一个值,所以可以赋值给s3 >>> s3=s1.symmetric_difference(s2) >>> print(s3) #所谓对称交集就是把两个集合里互为不同的元素放到一起 {1, 2, 7, 8, 11, 77, 22, 88}
15、symmetric_difference_update()方法求对称交集并更新赋值给第一个交集,不会返回值
1 s1={1,2,3,4,5,7,8} 2 s2={11,22,3,4,5,77,88} 3 s3=s1.symmetric_difference_update(s2) 4 print(s3) 5 #输出None,因为这个方法不会返回值,所以为None 6 None 7 8 9 s1.symmetric_difference_update(s2) 10 print(s1) 11 #输出结果,s1重新赋值为两个集合的对称交集 12 {1, 2, 3, 4, 5, 7, 8}
16、union()方法,就是求两个集合的并集
1 s1={1,2,3,4,5,7,8} 2 s2={11,22,3,4,5,77,88} 3 s3=s1.union(s2) 4 print(s3) 5 6 #以下是输出 7 {1, 2, 3, 4, 5, 7, 8, 11, 77, 22, 88}
17、update()方法,更新集合
1 s1={1,2,3,4,5,7,8} 2 s4={55,66,99} 3 s1.update(s4) 4 print(s1) 5 #以下是输出 6 {1, 2, 3, 4, 5, 66, 7, 8, 99, 55}