集合
定义 集合(set)是一种无序不重复对象类型 集合类似字典,但是只有键,没有值 功能 消除重复元素 将列表中的重复元素消除 实现交、并、差等数学计算
语法 变量 = set(列表/字符串 ) s = set(list) >>> list = [1,2,3,1,2,4] >>> s1 = set(list) >>> s1 set([1, 2, 3, 4]) s = set(str) >>> str = 'hello,world;hi,world' >>> s2 = set(str) >>> s2 set(['e', 'd', 'i', 'h', 'l', 'o', ',', 'r', 'w', ';']) 特征
无序 类似字典,没有序列/索引,不支持切片和索引访问 不重复 每个项在集合中都是唯一的 可变&不可变 可变集合 set( ) 可增加删除元素 不可变集合 frozenset( ) 不可增删
如何操作集合:
操作符
交集 & 功能 获取集合中相同的元素 举例 >>> l1 = [1,2,3,4,5] >>> l2 = [2,3,4,5,6] >>> s1 = set(l1) >>> s1 set([1, 2, 3, 4, 5]) >>> s2 = set(l2) >>> s2 set([2, 3, 4, 5, 6]) >>> s1 & s2 set([2, 3, 4, 5]) 并集 | 功能 将集合中的元素合并 举例 >>> s1 | s2 set([1, 2, 3, 4, 5, 6]) 差集 - 功能 获取集合中的不同元素,不同元素在s1中 举例 >>> s1 - s2 set([1]) ^ 功能 对称差分,获取集合中的不同元素,元素在不同集合中(并集减去交集) 举例 >>> s1 ^ s2 set([1, 6])
内置函数:
交集 s.intersection( ) >>> s1.intersection(s2) set([2, 3, 4, 5]) 并集 >>> s.union( ) >>> s1.union(s2) set([1, 2, 3, 4, 5, 6]) 差集 s.difference( ) >>> s1.difference(s2) set([1]) s.symmetric_difference( ) >>> s1.symmetric_difference(s2) set([1, 6]) 增加 s.add( ) 功能 增加元素 举例 >>> s1 set([1, 2, 3, 4, 5]) >>> s1.add(10) >>> s1 set([1, 2, 3, 4, 5, 10]) >>> s1.add(1) 增加已经存在的元素,集合不改变 >>> s1 set([1, 2, 3, 4, 5, 10]) s.update( ) 功能 增加集合中的元素(集合叠加) 举例 >>> s1.update(s2) >>> s1 set([1, 2, 3, 4, 5, 6, 10]) 删除 s.remove( ) 功能 删除特定元素;若没有该元素则报错 举例 >>> s1 set([1, 2, 3, 4, 5, 6, 10]) >>> s1.remove(1) >>> s1 set([2, 3, 4, 5, 6, 10]) >>> s1.remove(1) Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: 1 s.discard( ) 功能 删除特定元素;若没有该元素不报错 举例 >>> s1 set([2, 3, 4, 5, 6, 10]) >>> s1.discard(1) >>> s1 set([2, 3, 4, 5, 6, 10]) >>> s1.discard(2) >>> s1 set([3, 4, 5, 6, 10]) s.pop( ) 功能 删除一个元素 举例 >>> s1 set([1, 2, 3, 4, 5]) >>> s1.pop() 1 >>> s1 set([2, 3, 4, 5]) 清除 s.clear( ) 功能 清除该集合 举例 >>> s1 set([3, 4, 5]) >>> s1.clear() >>> s1 set([]) 判断 s.issubset 功能 判断s1是否s2的子集 举例 >>> s1 set([1, 2, 3, 4, 5, 6, 7]) >>> s2 set([2, 3, 4, 5, 6]) >>> s1.issubset(s2) False s.issuperset 功能 判断s1包含s2 举例 >>> s1.issuperset(s2) True
来源:oschina
链接:https://my.oschina.net/u/4442211/blog/3211404