python基本数据类型-集合
2016-12-20 22:37 ZN23&24 阅读(75) 评论(0) 收藏 举报集合set
基本数据类型特点:
可变:列表,字典 不可变:字符串,数字,元组
1、不同的元素组成
2、无序
1 s = {1,2,5,5,'g','h'} 2 print(s)
执行结果:
1 {2, 1, 'g', 'h', 5}
3、集合中的元素必须是不可变类型
加入可变的类型会报错
方法:
1、add 添加,添加可变的数据类型也是会报错的
1 s = {1,2,5,5,'g','h'} 2 s.add(3) 3 print(s)
执行结果:
1 {1, 2, 3, 5, 'h', 'g'}
2、clear 清空集合
3、intersection 交集,相当于&
1 s = {1,7,9} 2 s1 = {1,9,5} 3 print(s&s1) 4 print(s.intersection(s1)) 5 执行结果 6 {9, 1} 7 {9, 1}
执行结果
1 {9, 1} 2 {9, 1}
4、union 并集,相当于 |
1 s = {1,7,9} 2 s1 = {1,9,5} 3 print(s|s1) 4 print(s.union(s1))<br>执行结果<br>{1,5,7,9}<br>{1,5,7,9}
5、difference 差集,相当于-
1 s = {1,7,9} 2 s1 = {1,9,5} 3 print(s-s1) 4 print(s.difference(s1)) 5 执行结果 6 {7} 7 {7}
6、symmetric_difference 交叉补集,相当于^
1 s = {1,7,9} 2 s1 = {1,9,5} 3 print(s^s1) 4 print(s.symmetric_difference(s1))<br> 5 执行结果 6 {5, 7} 7 {5, 7}
7、difference-update 差集更新
8、isdisjoint 判断是否有交集
9、issubset 判断是否为子集
1 s1={1,2} 2 s2={1,2,3} 3 print(s1.issubset(s2)) 4 print(s2.issubset(s1)) 5 6 True 7 False
10、issuperset 判断是否为父集
1 s1={1,2} 2 s2={1,2,3} 3 print(s2.issuperset(s1)) 4 5 True
11、update 更新多个值,可迭代都可传
12、pop,remove,discard 均为删除
1 s = {9, 'sb', 1, 2, 3, 4, 5, 6} 2 s.pop() # pop不能指定删除,只可以随机删除 3 print(s) 4 s = {9, 'sb', 1, 2, 3, 4, 5, 6} # 指定删除元素,当删除的元素不存在时,删除会报错 5 s.remove(4) 6 print(s) 7 s = {9, 'sb', 1, 2, 3, 4, 5, 6} 8 s.discard(5) 9 print(s) # 指定元素删除;和remove唯一的区别删除不存在不会报错
frozenset 不可变集合 元素一经创建,不可增加、删除和修改。因此没有add、pop、discard、remove和所有以_update结尾的方法。但可以作为左值接受赋值。
frozenset和set混合运算时,返回的值以左边的操作变量为准。
ps1:
1 frozenset(a) | set(b) 的返回值就是frozenset, 2 3 set(a) | frozenset(b) 的返回值就是set
ps2:
1 s1=frozenset('hello')
2 print(s1)
执行结果:
1 frozenset({'l', 'h', 'o', 'e'})
示例:
1 s1={1,2,3,1} #定义一个set s1 如果s1={}为空则默认定义一个字典 2 s2=set([2,5,6]) #定义一个set s2 3 print(s1) #s1={1,2,3} 自动去除重复的元素 4 5 s1.add(5) #s1={1,2,3,5} 添加一个元素 6 print(s1) 7 8 s3=s1.difference(s2) #返回一个s1中存在而不存在于s2的字典s3,s3={1,3},而s1并没有改变 9 print(s3) 10 11 s1.difference_update(s2) #s1跟新成上面的s3 s1={1,3} 12 s1.discard(1) #删除元素1,不存在的话不报错 s1={3} 13 print(s1) 14 s1.remove(3) #删除元素3,不存在的话报错 s1={} 15 print(s1) 16 s1.update([11,2,3]) #跟新s1中的元素,其实是添加 s1={11,2,3} 17 print(s1) 18 k=s1.pop() #删除一个元素,并将删除的元素返回给一个变量,无序的,所以并不知道删除谁 19 20 21 s1={1,2,3,4} #这里重新定义了集合s1,s2 22 s2={3,4,5,6} 23 r1=s1.intersection(s2) #取交集,并将结果返回给一个新的集合 r1={3,4} 24 print(r1) 25 print(s1) 26 s1.intersection_update(s2) #取交集,并将s1更新为取交集后的结果 s1={3,4} 27 print(s1) 28 29 k1=s1.issubset(s2) #s1是否是s2的的子序列是的话返回True,否则False 这里k1=true 30 print(k1) 31 k2=s1.issuperset(s2) #s1是否是s2的父序列 k2=False 32 33 k3=s2.isdisjoint(s1) #s1,s2,是否有交集,有的话返回False,没有的话返回True 34 print(k3) 35 s1.update([1,2]) #s1={1,2,3,4} 36 r3=s1.union(s2) #取并集将结果返回给r3 r3={1,2,3,4,5,6} 37 print(r3) 38 r2=s1.symmetric_difference(s2) #r2=s1并s2-s1交s2 r2={1,2,5,6} 39 print(r2) 40 s1.symmetric_difference_update(s2) #s1更新为 s1并s2 - s1交s2 s1={1,2,5,6} 41 print(s1)
浙公网安备 33010602011771号