集合set
基本数据类型特点(可变:列表,字典 不可变:字符串,数字,元组)
- 不同的元素组成
- 无序
- 集合中的元素必须是不可变类型,加入可变的类型会报错
#!/usr/bin/python3 student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} print(student) # 输出集合,重复的元素被自动去掉 # 成员测试 if('Rose' in student) : print('Rose 在集合中') else : print('Rose 不在集合中') # set可以进行集合运算 a = set('abracadabra') b = set('alacazam') print(a) print(a - b) # a和b的差集 print(a | b) # a和b的并集 print(a & b) # a和b的交集 print(a ^ b) # a和b中不同时存在的元素
方法:
A、add 添加,添加可变的数据类型也是会报错的
1
2
3
|
s = { 1 , 2 , 5 , 5 , 'g' , 'h' } s.add( 3 ) print (s) |
执行结果
1
|
{ 1 , 2 , 3 , 5 , 'h' , 'g' } |
B、clear 清空集合
C、intersection 交集,相当于&
1
2
3
4
5
6
7
|
s = { 1 , 7 , 9 } s1 = { 1 , 9 , 5 } print (s&s1) print (s.intersection(s1)) { 9 , 1 } { 9 , 1 } |
D、union 并集,相当于 |
1
2
3
4
|
s = { 1 , 7 , 9 } s1 = { 1 , 9 , 5 } print (s|s1) print (s.union(s1))<br><br>{ 1 , 5 , 7 , 9 }<br>{ 1 , 5 , 7 , 9 } |
E、difference 差集,相当于-
1
2
3
4
5
6
7
|
s = { 1 , 7 , 9 } s1 = { 1 , 9 , 5 } print (s - s1) print (s.difference(s1)) { 7 } { 7 } |
F、symmetric_difference 交叉补集,相当于^
1
2
3
4
5
6
7
|
s = { 1 , 7 , 9 } s1 = { 1 , 9 , 5 } print (s^s1) print (s.symmetric_difference(s1)) { 5 , 7 } { 5 , 7 } |
G、difference-update 差集更新
H、isdisjoint 判断是否有交集
I、issubset 判断是否为子集
1
2
3
4
5
6
7
|
s1 = { 1 , 2 } s2 = { 1 , 2 , 3 } print (s1.issubset(s2)) print (s2.issubset(s1)) True False |
J、issuperset 判断是否为父集
1
2
3
4
5
|
s1 = { 1 , 2 } s2 = { 1 , 2 , 3 } print (s2.issuperset(s1)) True |
k、update 更新多个值,可迭代都可传
L、pop,remove,discard 均为删除
1
2
3
4
5
6
7
8
9
|
s = { 9 , 'sb' , 1 , 2 , 3 , 4 , 5 , 6 } s.pop() # pop不能指定删除,只可以随机删除 print (s) s = { 9 , 'sb' , 1 , 2 , 3 , 4 , 5 , 6 } # 指定删除元素,当删除的元素不存在时,删除会报错 s.remove( 4 ) print (s) s = { 9 , 'sb' , 1 , 2 , 3 , 4 , 5 , 6 } s.discard( 5 ) print (s) # 指定元素删除;和remove唯一的区别删除不存在不会报错 |