前言
Hi,大家好,我是可乐, 今天介绍 Python
集合
的相关知识,并附上相应的案例代码,便于学习、吸收。
集合简介
集合 (Set)
是 Python 中基本数据结构之一,与数学中的集合概念类似但又存在一定差异,集合中的元素唯一、且无序存储。
集合使用大括号 -
{}
包裹,元素之间使用逗号 -
,
分隔,集合中的元素可以是字符串、数字、列表等其他任何不可变数据类型。
集合不支持索引、嵌套,也没有切片操作,但支持更新、删除等操作,并且可进行
并集
、
交集
、
差集
等常见的集合操作,下面我们通过案例来学习。
集合初体验
1、使用
set()
方法定义一个空集合。
>>> def_set = set()
2、使用
{}
定义一个非空集合 。
# 之前介绍过 {} 用于定义空字典
3、集合特性之元素唯一。
>>> def_set = {
4、集合特性之元素无序存储。
>>> def_set = set([
5、集合特性之不可通过索引获取元素,但可通过 for
循环获取。
>>> def_set = {
6、使用
in
、
not in
判断元素是否在集合中,是则返回
True
, 否则返回
False
。
>>> def_set = (
集合基础方法
集合基础方法可参照下表:
方法 | 说明 |
len(set) | 计算集合元素数量 |
max(set) | 返回集合中最大的元素 |
min(set) | 返回集合中最小的元素 |
type(set) | 查看数据类型 |
set(iterable) | 将可迭代对象转换为集合 |
1、使用
len
方法计算集合数量。
>>> def_set = {
2、使用
max
方法,返回集合中最大的元素。
>>> def_set = {
3、使用
min
方法,返回集合中最小的元素。
>>> def_set = {
4、使用
type
方法查看数据类型。
>>> def_set = {
5、使用
set
方法将可迭代对象转换为集合。
>>> def_set = set([
集合内置方法
Python
中的
set
类提供了集合操作相关的内置方法,集合中还提供了部分操作符号与之对应,下面按照类中方法定义的顺序演示。
部分集合内置函数与集合操作符对于关系可参照下表:
方法 | 符号 | 说明 |
difference | - | 计算差集 |
intersection | & | 计算交集 |
issubset | < | 子集判断 |
symmetric_difference | ^ | 计算对称差集 |
union | | | 计算并集 |
1、使用
add
方法,给集合添加元素,若元素已存在,不做任何操作。
# 使用语法:set.add(obj)
2、使用
clear
方法清空集合。
# 使用语法:set.clear()
3、使用
copy
方法
浅拷贝
复制一个新集合。
# 使用语法:set.copy()
4、使用
difference
方法,计算两个集合的差集,返回一个新集合,与集合运算符
-
效果相同。
# 使用语法:set1.difference(set2)
5、使用
difference_update
方法,计算两个集合的差集,并直接从 def_set1 中移除两个集合都存在的元素。
# 使用语法:set1.difference_update(set2)
6、使用
discard
方法,删除集合中指定的元素,元素不存在也不会报错。
# 使用语法:set.discard(obj)
7、使用
intersection
方法,计算多个集合的交集,与集合运算符
&
效果相同。
# 使用语法:set1.intersection(set2,set3,...)
8、使用
intersection_update
方法,计算多个集合的交集,并直接从 def_set1 中删除所有集合中都不重叠的元素。
# 使用语法:set1.intersection_update(set2,set3,...)
9、使用
isdisjoint
方法,判断两个集合是否不包含相同的元素,是则返回
False
,否则返回
True
。
# 使用语法:set1.isdisjoint(set2)
10、使用
issubset
方法,判断 set1 是否是 set2 的子集,是则返回
True
,否则返回
False
。
# 使用语法:set1.issubset(set2)
11、使用
issuperset
方法,判断 set1 是否是 set2 的
超集
,可理解为父集,是则返回
True
,否则返回
False
。
# 使用语法:set1.issuperset(set2)
12、使用
pop
方法,删除并返回集合中任意元素。
# 使用语法:set.pop()
13、使用
remove
方法,删除集合中某一元素。
# 使用语法:set.remove(obj)
14、使用
symmetric_difference
方法,删除两个集合中相同的元素,再取并集,即
对称差集
,与集合运算符
^
效果相同。
# 使用语法:set1.symmetric_difference(set2)
15、使用
symmetric_difference_update
方法,取两个集合的对称差值,并在set1 中删除两个集合中相同的元素 。
# 使用语法:set1.symmetric_difference_update(set2)
16、使用
union
方法,取多个集合的并集,与集合运算符
|
效果相同。
# 使用语法:set1.union(set2,set3,...)
17、使用
update
方法,添加新的元素或集合到当前集合中,重复的元素会被忽略。
# 使用语法:set1.update(set2)
集合应用
1、使用集合对字符串进行去重。
>>> def_str =
2、使用集合对列表进行去重。
>>> def_list = [
3、使用集合对元组进行去重。
>>> def_tuple = (
总结
- Python 中的集合,因其元素唯一的特性,常用于数据的去重,当然,它也可用于数学集合的相关计算。
- 定义集合可使用
set()
方法,但不能使用{}
,因为大括号定义的是一个空字典,集合的元素只能为不可变数据类型。- 集合的内置方法中,部分有操作符与之对应,使用时可自行选择。
- 集合的内置方法中,有几组方法的效果需要做一下区分。
- difference 与 difference_update,求差集
- intersection 与 intersection_update,求交集
- symmetric_difference 与 symmetric_difference_update,求对称差集
- 以上几组方法的区别均在于,后者会直接操作原始集合