Python集合
在前面的学习中,我们已经初步的认知了,列表、元组和字典,今天我们来看拿一下python中,唯一无序且元素唯一的数据类型——集合(set)
集合是什么
在学习之前,我们先来简单的了解一下集合是什么。首先集合是一个无序不重复的一个集合,同时集合中的元素内容是不可变类型。
集合的使用
我们在前面的学习中基本可以看到, ()
用来表示元组、 {}
用来表示字典, []
用来表示列表,那么用什么来表示集合呢?
其实集合可以用 {}
来表示,也可以用 set
函数来表示, 注意:创建一个空集合必须用 set() 而不是 ☑️,因为 ☑️ 是用来创建一个空字典 。我们来看一下代码格式。
my_set = {元素1,元素2,...}
我们来看一下简单的代码实现:
♾️ python 代码:my_set ={1,2,3,4,5,6,"jiusheng","酒笙","酒笙"}
print(my_set)
这里我们可以看到,有重复元素 酒笙
,前面我们说过,集合是唯一的,所以这里, 酒笙
会不会重复出现呢?让我们来看一下运行结果。
{1, 2, 3, 4, 5, 6, 'jiusheng', '酒笙'}
很明显, 酒笙
这一个重复元素没有出现两次,这是因为集合的元素是唯一的 ,重复的元素最后都会被舍去。
记得注意,集合的内容是不可变的,所以说,如果集合中有了可变的元素,就会报错,例子如下:
♾️ python 代码:my_set ={1,2,3,4,5,6,["酒笙","酒笙"]}
print(my_set)
运行后报错,报错内容如下:
♾️ python 代码: my_set ={1,2,3,4,5,6,["酒笙","酒笙"]}
TypeError: unhashable type: 'list'
set 函数定义集合
通过 set 定义空集合
♾️ python 代码:my_set =set()
print(type(my_set))
结果提示:
♾️ python 代码:<class 'set'>
set函数转换字符串
♾️ python 代码:my_set =set("酒笙还是那么优秀")
print(my_set)
运行结果如下:
♾️ python 代码:{'是', '还', '那', '秀', '酒', '么', '优', '笙'}
我们可以很清楚的看到,在集合里面,所有的元素都是无序的。
我们来看一下集合对元组的去重:
a_typle = ("酒笙","还是","那么","优秀","酒笙")
b_set = set(a_typle)
print(b_set)
运行结果如下:
♾️ python 代码:{'那么', '优秀', '还是', '酒笙'}
集合的基本操作
在学习之前我们来看一下集合的主要操作符号
|
表示并集&
表示交集-
表示差集^
表示对称差集
交集(intersection)
交集就是求两个集合共有的元素。
♾️ python 代码:a = {"酒笙","还是","那么","优秀"}
b = {"优秀"}
c = a & b
print(c)
我们来看一下运行结果:
♾️ python 代码:{'优秀'}
并集(union)
并集就是取所有集合的所有元素,如果出现重复的保留一个。使用符号 | 或者 union 方法完成。
♾️ python 代码:a = {"酒笙","还是","那么","优秀"}
b = {"优秀"}
c = a | b
print(c)
#union方法
d = a.union(b)
print(d)
运行结果如下:
♾️ python 代码:{'酒笙', '那么', '优秀', '还是'}
{'酒笙', '那么', '优秀', '还是'}
差集(difference)
对于求集合的差集与交并集不同,有个先后顺序问题,例如属于 A 但不属于 B 表示为 A-B,同理属于 B 但不属于 A,表示为 B-A。
差集的符号是 -,可以使用 difference 方法进行运算。
a = {"酒笙","还是","那么","优秀"}
b = {"优秀"}
c = a - b
print(c)
#difference方法
d = a.difference(b)
print(d)
运行结果如下:
♾️ python 代码:{'那么', '还是', '酒笙'}
{'那么', '还是', '酒笙'}
这里我们可以试着吧 c = a-b
试着改成 c = b - a
运行看一下结果,后面的difference也是如此,看一下结果,好好理解一番。
对称差集(symmetric difference)
A 与 B 两个集合,如果想要获得属于 A 或者 B 集合的元素,但又不要属于 A 且属于 B 的元素,这时就是对称差集的应用场景了。
对称差集的符号是 ^,方法名是 symmetric_difference。
a = {"酒笙","还是","那么","优秀"}
b = {"优秀"}
c = a ^ b
print(c)
#symmetric_difference方法
d = a.symmetric_difference(b)
print(d)
运行结果如下:
♾️ python 代码:{'那么', '酒笙', '还是'}
{'那么', '酒笙', '还是'}
上述代码就会输出既不属于 A 也不属于 B 的元素,即对称差集。
集合的方法
1、添加元素
语法格式如下:
my_set.add(待添加元素)
演示代码如下:
♾️ python 代码:a = {"酒笙","还是","那么","优秀"}
a.add("优秀")
print(a)
运行结果如下:
♾️ python 代码:{'还是', '那么', '酒笙', '优秀'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
♾️ python 代码:my_set.update(待添加元素)
实际演示如下:
♾️ python 代码:a = {"酒笙","还是","那么","优秀"}
a.update("优秀",[1,2,3],{"嘿嘿"})
#添加了有列表,和字典
print(a)
运行结果如下:
♾️ python 代码:{1, 2, '优秀', 3, '还是', '那么', '秀', '优', '酒笙', '嘿嘿'}
移除元素
语法格式如下:
♾️ python 代码:my_set.remove(待删除元素)
具体演示代码如下:
♾️ python 代码:a = {"酒笙","还是","那么","优秀"}
a.remove("酒笙")
print(a)
运行结果如下:
♾️ python 代码:{'优秀', '那么', '还是'}
discard 方法可以删除集合元素,如果元素不存在不会报错。
♾️ python 代码:a = {"酒笙","还是","那么","优秀"}
a.discard("酒笙")
print(a)
#删除没有的元素不会报错
a.discard("哈哈哈")
print(a)
运行结果如下:
♾️ python 代码:{'还是', '优秀', '那么'}
{'还是', '优秀', '那么'}
我们再来介绍有个 pop
方法为随机删除一个元素,被删除的元素会被返回,即可以用一个变量接收被删除的元素,如果集合为空使用 pop
会报错
a = {"酒笙","还是","那么","优秀"}
a.pop()
print(a)
#空集合使用pop会报错
b = set()
b.pop()
print(b)
运行内容如下:
♾️ python 代码:{'优秀', '还是', '酒笙'}
#下面是报错内容
KeyError: 'pop from an empty set'
clear 方法删除集合内的所有元素
♾️ python 代码:a = {"酒笙","还是","那么","优秀"}
a.clear()
print(a)
运行结果如下:
♾️ python 代码:set()
集合可用的内置函数
max、min、sum
以上内置函数作用域集合与列表使用规则一致,自行测试即可。
len
获取集合元素的数量。
sorted
使用该函数可以对集合进行排序。
总结
关于集合我们就先介绍到这里,还有很多知识,我们在以后的学习中在进行学习,最后,学习的你,真的很好看!
相关文档
菜鸟教程
csdn
👍
💖
💯
💦
😄
🪙