基本数据类型—set
一、集合的区别
1)set是什么?
set:是一个无序接不重复的元素集合
>>> s = {11,22,33,44} >>> s {33, 11, 44, 22}
里面存储元素的顺序并不是按之前定义的顺序,因此不能通过序号去取值
2)与其它集合区别
list:允许重复的集合,可修改
tuple:允许重复的集合,不可修改
dict:
set:不允许重复的集合,可修改
二、set创建
s = set()
s = {11,22,33} 与字典区别:字典是键值对,而set对象都是单个元素
注:不能用s={}的形式创建空的set对象,s = {} 这样默认创建的是字典类型
三、set转化
s = set(可迭代对象) 和 list 的转化很相似,但是转化后的set对象没有重复的元素
>>> l = [11,222,11,33] >>> s = set(l) >>> s {33, 11, 222} >>> a = 'asdasss' >>> s1 = set(a) >>> s1 {'s', 'a', 'd'}
四、set 提供的功能
add:添加一个元素到集合里
clear:清空集合
copy:浅拷贝
difference:找出两个或多个集合中不同元素,将这些元素组成一个新的集合并返回这个新的集合。如: A.difference(B) 返回A中间有B没有的元素的jihe
>>> s1 = {1,2,3,4} >>> s2 = {1,2,3} >>> s3 = {1,2} >>> s1.difference(s3) {3, 4} >>> s1.difference(s3,s2) {4}
difference_update:移除相同到的元素。如: A.difference_update(B) 从A中移除B中存在的元素
>>> s1 = {1,2,3,4} >>> s2 = {1,2,3} >>> s1.difference_update(s2) >>> s1 {4}
discard:移除元素(根据值来移除元素,若值不存在不报错)
>>> s1 = {1,2,3,4} >>> s1.discard(4) >>> s1 {1, 2, 3} >>> s1.discard(5) >>> s1 {1, 2, 3}
remove:移除元素(根据值来移除元素,若值不存在报错)
>>> s1 = {1,2,3,4} >>> s1.remove(4) >>> s1 {1, 2, 3} >>> s1.remove(5) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 5
intersection:返回两个或多个集合的交集
>>> s1 = {1,2,3,4} >>> s2 = {1} >>> s3 = {1,2} >>> s1.intersection(s2,s3) {1}
intersection_update:将集合的交集赋给调用这个方法的集合
>>> s1 = {1,2,3,4} >>> s2 = {1} >>> s3 = {1,2} >>> s1.intersection_update(s2,s3) >>> s1 {1}
isdisjoin:判断是否无交集,若没有交集返回True,反之返回False
>>> s1 = {1,2,3,4} >>> s2 = {1} >>> s1.isdisjoint(s2) False >>> s4 = {5} >>> s1.isdisjoint(s4) True
issubset:判断是不是子集合
issuperste:判断是不是父集合
>>> s1 = {1,2,3,4} >>> s2 = {1,2} >>> s1.issubset(s2) False >>> s1.issuperset(s2) True
pop:随机移除一个元素(arbitrary 武断的,在这里表示随机的)
symmetric_difference:返回两个集合中除交集以外的所有元素
>>> s2 = {1,2,5} >>> s1 = {1,2,3,4} >>> s1.symmetric_difference(s2) {3, 4, 5} >>> s1.difference(s2) {3, 4} >>> s2.difference(s1) {5}
symmetric_difference_update:将交集以外的所有元素赋给调用这个方法的集合
>>> s2 = {1,2,5} >>> s1 = {1,2,3,4} >>> s1.symmetric_difference_update(s2) >>> s1 {3, 4, 5}
union:返回集合的并集
>>> s2 = {1,2,5} >>> s1 = {1,2,3,4} >>> s1.union(s2) {1, 2, 3, 4, 5}
update:批量添加元素,后面的参数要是可迭代的
>>> s1 {1, 2, 3, 4} >>> s1.update('789') >>> s1 {1, 2, 3, 4, '7', '9', '8'}