多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 集合概念和定义: ### 概念 由一个或多个确定的元素所构成的整体叫做集合。 集合本身是无序的,不可以为集合创建索引或执行切片操作,也没有键可用来获取集合中的值。 集合有两种不同类型:可变集合(set)和不可变集合(frozenset). 对于可变集合,可以添加和删除元素;对于不可变集合只能读取元素,不能进行修改 ### 集合中的元素特征: 1. 确定性(元素必须可hash) 2. 互异性(去重) 3. 无序性(集合中的元素没有先后之分) >注意:集合存在的意义就在于去重和关系运算 ### 集合的定义 使用一对大括号来定义集合,如`s={1,2,3,4,5,6,7}` #### 定义可变集合 * 方法1 `s={1,2,3,4,5,6,7}` * 方法2 `s=set({1,3,2})` #### 定义不可变集合 ```python >>> s=frozenset({1,2,4,3}) >>> s frozenset({1, 2, 3, 4}) ``` ## 集合的常规操作 ### 创建集合 创建集合的时候,就可以看出来集合的无序性和去重性 ```python >>> s={6,4,5,'h','e','l','l','o'} >>> s {'o', 4, 5, 6, 'l', 'h', 'e'} ``` ### 增加值到集合 * add增加单个 ```python >>> s={6,4,5,3} >>> s.add('A') >>> s.add('BC') >>> s {3, 4, 5, 6, 'A', 'BC'} ``` * update增加多个 ```python >>> s.update(['你们','好','呀']) >>> s {3, 4, 5, 6, '好', '你们', '呀'} ``` ### 删除集合元素 * pop随机删除 如何集合为空,用pop随机删除就会报错 ```python >>> s={3} >>> s.pop() 3 >>> s.pop() #集合空,删除报错 Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: 'pop from an empty set' ``` * remove指定删除 如果要删除的元素不存会报错 ```python >>> s={3, 4, 5, 6, '好', '你们', '呀'} >>> s.remove('好') >>> s.remove('好') Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: '好' ``` * discard指定删除 如果要删除的元素不存在也不会报错 ```python >>> s={3, 4, 5, 6, '好', '你们', '呀'} >>> s.discard('好') >>> s.discard('好') ``` ### 复制和清空 * clear清空集合 ```python >>> s={3, 4, 5, 6, '好', '你们', '呀'} >>> s.clear() >>> s set() ``` * copy复制集合 ```python >>> s={3, 4, 5, 6, '好', '你们', '呀'} >>> s2=s.copy() >>> s2 {'呀', 3, 4, 5, 6, '你们', '好'} ``` ## 集合的关系运算 ### 集合的交集 交集使用`&`符号或`intersection`函数来表示 ```python >>> l= {'张三','李四','noah'} >>> p = {'张三','李四','luo'} >>> l&p {'李四', '张三'} >>> l.intersection(p) {'李四', '张三'} ``` ### 结合的并集 并集使用`|`或`union`函数来表示 ```python >>> l= {'张三','李四','noah'} >>> p = {'张三','李四','luo'} >>> l|p {'noah', 'luo', '李四', '张三'} >>> l.union(p) {'noah', 'luo', '李四', '张三'} ``` ### 集合的差集 差集使用`-`或`difference`函数来表示 ```python >>> l= {'张三','李四','noah'} >>> p = {'张三','李四','luo'} >>> l.difference(p) {'noah'} >>> l-p {'noah'} ``` ### 集合的对称差集 对称差集使用`^`或`.symmetric_difference`函数来表示 ```python >>> l= {'张三','李四','noah'} >>> p = {'张三','李四','luo'} >>> l^p {'luo', 'noah'} >>> l.symmetric_difference(p) {'luo', 'noah'} ``` ### 判断某元素是否在集合内 使用`in`,`not in`判断某个元素是否在集合中 ```python >>> l= {'张三','李四','noah'} >>> 'noah' in l True >>> 'noah' not in l False ``` ## 集合间的关系 两个集合之间一般有三种关系,相等、相交、包含。 ### 判断两个集合是否相等 使用`==`,`!=`判断两个集合是否相等 ```python >>> l= {'张三','李四','noah'} >>> p= {'张三','李四','noah'} >>> l == p True >>> l != p ... False >>> l != p False ``` ### 判断两个集合是否不相交 使用`isdisjoint`函数判断是否不相交,相交则返回`false`,不相交返回`ture` ```python >>> l= {'张三','李四','noah'} >>> p= {'张三','李四','luo'} >>> q= {1,2,3} >>> l.isdisjoint(p) False >>> l.isdisjoint(q) True ``` ### 判断两个集合是否包含 `issuperset`判断集合是不是包含其他集合,等同于a>=b `issubset`判断集合是不是被其他集合包含,等同于a<=b ```python >>> l= {'张三','李四','noah'} >>> p= {'张三','李四'} >>> l.issuperset(p) True >>> p.issubset(l) True ```