【Python】数据容器之Set集合
目录
(6)difference_update方法,消除集合1中与集合2共有的元素
1、什么是Set集合类型
Set集合类型在各个编程语言中都有存在,作用基本是一致,在Python中Set是一个容器类型,可以一个变量存储多个元素数据,他的主要特点是存储的元素不能重复,并且他的元素是无序的,不能通过下标进行获取,元素位置也是随机的。
2、set集合的定义与运用
set是以set1 = {元素1,元素2,元素3,元素n.....}的形式书写
关于定义我们来看下面这个案例(定义了一个有元素的集合和一个空集合)
- 以下集合中,定义了两个相同的元素“杰尼龟”,在打印输出集合时,两个杰尼龟就变成了一个
#1、定义集合
set1 = {"妙蛙种子","杰尼龟","小火龙","皮卡丘","杰尼龟"}
print(set1)
#输出:{'小火龙', '杰尼龟', '皮卡丘', '妙蛙种子'},将后一个重复的元素给移除了
#2、定义一个空集合
#这是定义了一个空集合
val = set()
3、集合常用的方法
下面是set中的一些常用方法和示例,可以参考学习下。
| 方法 | 作用 |
|---|---|
| set1.add("元素") | 向集合内添加元素 |
| set1.remove("元素") | 移除集合内指定元素 |
| set1.pop("元素") | 随机从集合内取出一个元素,取出的元素会在集合内剔除 |
| set1.clear() | 清空集合内的所有元素 |
| set1.defference(集合2) | 取出集合2在集合1中的差值(数学上的补集) |
| set1.difference_update(集合2) | 删除集合1中集合1与集合2共有的元素(只操作集合1,不影响集合2) |
| set1.union(集合2) | 将集合1与集合2合并,生成新集合,相同元素只保留一个 |
| 内置方法len(集合) | 统计集合中元素的个数 |
| 内置in关键字 | 值 in 集合 判断值是否在集合中存在,返回布尔值 |
(1)add方法向集合内添加元素
- 我们这里向集合内添加了集合内已有的元素 “小火龙”,最后输出会发现,只显示了一个。
- 因为添加集合内已有的元素,则集合不会去存放他,保证了数据的唯一性。
#2、add方法给集合中添加元素
set1 = {"妙蛙种子","杰尼龟","小火龙","皮卡丘","杰尼龟"}
#添加
set1.add("菊草叶")
set1.add("小火龙")
print(set1)
#{'小火龙', '妙蛙种子', '杰尼龟', '皮卡丘', '菊草叶'},添加的重复值小火龙已被移除
(2)remove方法移除指定元素
- 这个有点意思哈,因为集合元素的唯一性,所以移除的元素就真的消失了,移除时也不用考虑是否还有其他同名的元素了。
- 以下案例移除了集合内的元素“杰尼龟”,打印时元素“杰尼龟”将不再显示。
#定义元素
set1 = {"妙蛙种子","杰尼龟","小火龙","皮卡丘","杰尼龟"}
#3、remove方法移除元素
set1.remove("杰尼龟")
print(set1)
#输出:{'皮卡丘', '小火龙', '妙蛙种子', '菊草叶'}
(3)pop方法随机取出一个元素
- 此方法会从集合中随机取出一个元素,取出后元素将在集合中移除。
- 取出的元素将作为返回值的形式返回,可以使用变量接收做后续处理。
#定义一个集合并添加初始值
set1 = {"妙蛙种子","杰尼龟","小火龙","皮卡丘","杰尼龟"}
#pop方法随机取出一个元素,取出后会将取出的元素从原集合中剔除
val1 = set1.pop()
print(val1)
#这是集合里面任意一个值,例如杰尼龟(每次结果都是随机值)
#输出原集合
print(set1) #{'小火龙', '皮卡丘', '妙蛙种子'}
#这里发现原集合中,元素“杰尼龟”消失不见了,正是被pop方法随机取出,在集合中剔除了。
#而取出的元素“杰尼龟”则被存储在了val1变量中,可以用来做后续操作
(4)clear方法清空集合
- clear方法也是咱们的老朋友了,他的作用与list列表、str字符串的clear功能一样,清空内部的所有元素,这里是清空集合内所有值。
#5、clear方法清空集合中的元素
set1 = {"小火龙","阿尔宙斯","呆呆兽"}
#清空set1集合中所有值
set1.clear()
print(set1)
#输出:set(),就是空的意思
(5)defference方法取集合2在集合1中的差值
- 这个得说一下,这个方法需要两个集合,作用是取出集合2在集合1中的差值。
- 所谓差值就是集合2没有的元素,但集合1有的,就把这个只有集合1中有的元素给取出来。
- 并且这里取出的差值是不修改原集合,他会生成一个新集合,可用变量接收。
- 如果你还是没懂,那咱们拿出个案例来看下,如下:
#先定义了两个集合
set2 = {1, 2, 3, 4, 5, 6}
set3 = {1, 2, 3}
#下面我要取差值
val2 = set2.difference(set3)
print(val2)
#输出:{4, 5, 6}
#为啥最后结果是{4, 5, 6}呢?
#因为4,5,6这三个元素你看在set3中没有吧,但是呢,在set2中却有
#意思就是set2集合比set3集合多了三个元素{4, 5, 6},那么取值就是取的set2比set3多的元素
#就非常像当年数学中集合中的 “补集”
#为啥最后结果是{4, 5, 6}呢?
#因为4,5,6这三个元素你看在set3中没有吧,但是呢,在set2中却有
#意思就是set2集合比set3集合多了三个元素{4, 5, 6},那么取值就是取的set2比set3多的元素
#就非常像当年数学中集合中的 “补集”
看到这里你如果还有些不懂,那就再看个简单的例子,如下:
小明 手里有三个水果 {苹果,草莓,西瓜}
#
小红 手里只有一个水果 {草莓}
#
#
差值 = 小明.difference(小红)
#
print(差值) #输出结果为:{苹果,西瓜}
#
#最终得出:小明和小红手中水果比较,小明比小红多了苹果和西瓜两种水果。
#所以输出结果就是小明比小红多出的水果值
#
如果到这里你还有有些不懂,小政同学也是无可奈何了,咱还不是专业的讲师,哈哈。
既然这样,那就来吧,321上链接!
菜鸟教程-Python集合学习
https://www.runoob.com/python3/ref-set-difference.html
来这个链接瞧一瞧塞~
(6)difference_update方法,消除集合1中与集合2共有的元素
-
这方法和上面difference有区别,上面是取值,这个是删值。
-
使用集合1.difference_update(集合2)后,会删除集合1中集合1与集合2都有的元素。
-
最后集合1只留下集合2没有的值,集合2无需任何修改。
#依旧准备两个集合
set2 = {"苹果","草莓","西瓜"}
set3 = {"草莓"}
#这里可以看到,set2和set3中都有元素“草莓”
#difference_update方法,消除集合1中与集合2共有的元素(只删除集合1中的元素,集合2不变)
#开始删set2中的部分值
set2.difference_update(set3)
#输出两个集合各自的结果
print(set2) #{'苹果', '西瓜'}
print(set3) #{'草莓'}
#这里可以看到,集合set2中元素 “草莓” 消失了,而set3中“草莓”却还在。
#这是因为difference_update方法看到两个集合都有草莓,所以他将set2中草莓删除了。
#这个行为只删除了set2,而set3程序根本没有动他。
#所有最后结果就是删除了set2中set2与set3相同的元素“草莓”。
#这里可以看到,集合set2中元素 “草莓” 消失了,而set3中“草莓”却还在。
#这是因为difference_update方法看到两个集合都有草莓,所以他将set2中草莓删除了。
#这个行为只删除了set2,而set3程序根本没有动他。
#所有最后结果就是删除了set2中set2与set3相同的元素“草莓”。
别急,我们还有链接!
菜鸟教程-Python集合学习
https://www.runoob.com/python3/ref-set-difference_update.html
(7)union方法合并两个集合
- 这边两个集合合并之后因为集合的唯一性,所以相同元素也只会留一个。
#union方法合并两个集合,合并后去除重复值
set2 = {2,4,5,7}
set3 = {1,2,3,4}
val3 = set2.union(set3)
print(val3)
#输出:{1,2,3,4,5,7}
#这里合并后,两个列表都有的元素2,4最后输出后只剩一个了。
(8)len内置方法统计集合元素个数
- 这个也是很常用的,是Python的内置函数,作用就是统计元素个数、长度。
#定义集合
set1 = {"星期一","星期二","星期三","星期四","星期五","星期六"}
#len方法输出集合元素个数
print(len(set1))
#输出:6 元素个数为6
(9)in关键字判断元素是否在集合内存在
- in关键字是Python中内置的一个语法关键字,作用是判断前者是否在后者内出现。
- in关键字的结果是一个布尔值。
- 如果值存在于后者中,返回True,不存在则返回False。
#定义集合
set1 = {"星期一","星期二","星期三","星期四","星期五","星期六"}
#我想知道星期一是否在上面set1集合中存在?
print("星期一" in set1)
#输出:True
#想知道星期日是否在上面set1集合中存在?
print("星期日" in set1)
#输出:False
4、集合的循环遍历
set集合由于他没有下标,且元素是无序存储的,所以我们遍历时不能通过while进行遍历,只能通过for来实现集合元素的遍历。
#定义集合
set1 = {"星期一","星期二","星期三","星期四","星期五","星期六"}
#for循环遍历集合
#因为集合不支持下标获取值,所以不能用while去取值
for i in set1:
print(i)
"""
输出结果如下:
星期一
星期二
星期三
星期四
星期五
星期六
"""
5、总结
set列表的特点:元素无序、无下标、可存储任意类型、可修改、不可重复。
他的使用场景:对于一些只需要出现一个的,或者做随机抽奖、等不需要数据重复的场景。
来CSDN与小政同学一起学习吧,各位给点点赞,更多知识敬请期待!
我的博客:欢迎来到小政同学的博客
更多推荐
所有评论(0)