集合
- 集合(set)是一个无序的不重复元素序列
- 集合是可变对象
- 集合中的元素必须为不可变类型
集合的创建
- {元素,元素…}
- 使用set函数创建,set(iterable)
- 创建空集合只能使用set(),{}用于创建空字典
集合的访问
- 使用 for 循环遍历 set 项目
- 使用 in, not in关键字查询集合中是否存在指定值。
集合增加元素
- set1.add(元素) - 在集合中添加指定元素
- set1.update(序列) - 将序列中的元素全部添加到集合中
a={1,2}; b={3,4}; print(a.update(b))
result:
{1, 2, 3, 4}
集合删除元素
- set.remove(元素),没有这个元素时报错
- set1.pop()不能加参数,任意删除一个元素
- set1.clear(),删除集合中的所有元素
- set1.discard(元素),删除中指定的元素,当没有时,不报错
- del set1,删除set1
集合运算
- 对应的方法中如果有_update,则将原set改变,在原地址上更新。
| 方法 | 描述 | 举例 |
|---|
| 符号- (difference方法) | 多个集合的差集 | a={1,2,3}; b={1,2,3,4,5};print(b.difference(a)) => {4, 5} |
| 符号&(intersection方法) | 多个集合的交集 | a={1,2,3}; b={1,2,3,4,5};print(b.intersection(a)) => {1, 2, 3} |
| 符号|(union) | 多个集合的并集 | a={1,2,3}; b={1,2,3,4,5};print(b.union(a))=>{1, 2, 3, 4, 5} |
| 符号^ | (symmetric_difference) | 返回两个集合中不重复的元素集合 |
集合更改
集合添加元素
| 方法 | 描述 | 举例 |
|---|
| set.add(元素) | 集合中增加一个元素,ID不变 | a={1,2}; a.add(3);print(a) => {1, 2, 3} |
| set.update(集合) | 集合中添加一个集合,相同元素删除,ID不变 | a={1,2}; b={2,3,4}; a.update(b);print(a) => {1, 2, 3, 4} |
| set.union() |符号 | 集合并一个集合,ID改变 | a={1,2}; b={2,3,4}; c=a.union(b);print© => {1, 2, 3, 4} |
集合删除元素
| 方法 | 描述 |
|---|
| set.pop() | 随机删除一个元素,返回删除的元素,ID不变 |
| set.remove(元素) | 集合中删除一个元素,ID不变 |
| set.clear() | 删除集合中的所有元素,变为空集合,ID不变 |
| set.discard(元素) | 集合中删除一个元素,ID不变,如果没有该元素,啥也不做 |
| del set | 删除该集合 |
集合关系判断
| 方法 | 描述 | 举例 |
|---|
| =或!= | 判断两个集合是否相等 | a={1,2}; a.add(3);print(a) => {1, 2, 3} |
| 符号> <(set.issubset(set)) | 判断是否为子集 | a={1,2};b={1,2,3,4,5};print(a.issubset(b)) =>True |
| 符号>= <= | 判断是否为真子集 | |
| set.issuperset(set) | 判断是否为父集 | a={1,2,3,4};b={1,2,3,4,5};print(b.issuperset(a)) => True |
| isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True | a={1,2,3,4};b={1,2,3,4,5};print(b.isdisjoint(a)) => False |
集合的应用
- 可以利用集合去重,使用set(list)将列表转换为集合,自动去重。
- 利用集合可以进行关系测试,例如,求差集、并集。