一、集合的定义

定义:由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key。

特性:集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无须纠结于集合中的单个值。

(1、不同元素组成 2、无序 3、集合中的元素必须是不可变类型)

二、集合的使用

1、声明集合

jihe = {1,2,3,4,5}#与字典看上去类似,但是是不一样的。字典是 dict1 = {key:value,key2:value2,}需要key

(1)自动去重

注意,集合是有不同元素组成,所以即便里面的值重复了,也会去重。

例:

set1 = {1, 2, 4, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 1}print(set1)

运行结果

(2)打印内容是无序的

set1 = {"陈司","怎能","不","是","大帅哥"}print(set1)

运行结果

2、添加元素 set.add() 方法

例:

set1 = {1,3}

set1.add(2)print(set1)

运行结果

3、删除集合元素。

(1)set.pop() 与 set.remove()

set1 = {"s", 1, "234", 2}#pop会从集合中随机删除一个数

v =set1.pop()print(set1, "v =", v)#remove 可以传参数删除指定的值,但是要注意,如果传的值不存在会报错。慎用。

set1.remove(2)print(set1)

运行结果

(2)set.discard()

与remove()用法相同,但是如果元素不存在,不会报错。

set1 = {"s", 1, "234", 2}

b= set1.discard("123123")print(b)

set1.discard("s")print(set1)

运行

三、集合的运算

在python 中,集合的概念,有点类似数学之中集合的概念。可以求出交集并集等运算操作。

1、交集 set.intersection()

场景:有两组学生,第一组学生,选修了语文课,第二组学生,选修了数学课。但是其中有一些学生即选修了语文,也选修了数学,要求快速定位到这种学生。

例1,非集合方式。

#学习数学的人

stu_shuxue = ["陈司","李大","王二"]#学习语文的人

stu_yuwen = [ "陈司","王二"]#两者都学的人,先暂定为空

stu_double =[]#循环输出学习数学的人

for stu instu_shuxue:#如果学习数学的人,也在stu_yuwen 学习语文的人里。就是两者都学的人。并追加到stu_double集合。

if stu instu_yuwen:

stu_double.append(stu)print(stu_double)

运行结果

例2,集合方式

stu_shuxue = {"陈司", "李大", "王二"}

stu_yuwen= {"陈司", "王二"}#取交集

print(stu_shuxue.intersection(stu_yuwen))

#写法2

print(stu_shuxue&stu_yuwen)

运行

2、并集,set.union()方法

理解:把两个结合中所有元素组合在一起,并排重后取出结果。

场景:还是刚才的两组学生,求选修了数学和语文的全部同学名单。

stu_shuxue = {"陈司", "李大", "王二"}

stu_yuwen= {"陈司", "王二"}#取并集

print(stu_shuxue.union(stu_yuwen))#写法2

print(stu_shuxue | stu_yuwen)

运行

3、差集 set.difference()

理解:两个集合相减,A 减 B ,A 里有 1、2、3 B里有 2、3、4 如果 A 与B 的差集,会发现A 有 1 是B里没有的。所以A 减 B 等于 1 ,反过来 B 减 A 就等于4 ,因为4 是A 集合里没有的元素。

也就是说,发起差集的集合,会把自己有,而对方没有的元素得到。说的直白点,我是帅,高,富。 你是 丑 , 高,富。咱们都有高和富,我减去你就是帅。你减去我就是丑。

例:

set1 = {"陈司","高","富","帅"}

set2= {"某人","高","富","丑"}

#方法1print(set1.difference(set2))

#方法2print(set1-set2)

运行结果

4、交叉补集 set.symmetric_difference()

理解。集合A 是1、2、3 集合B 是 2、3、4 交叉补集就只保留 1 和 4 。因为 1 是 A 独有的, 4 是B 独有的。交叉补集会去掉共有的部分,只保留双方独有的部分。

场景:选修语文的有一组学生,选修数学的有一组学生。已知有的学生既选修了数学,又同时选修了语文,求只选修了一门课程的学生。这种情况就适合交叉补集。

#学习语文的

set_yuwen = {"陈司","A","B","C"}

#学习数学的

set_shuxue= {"某人","A","B","C"}

#方法1print(set_shuxue.symmetric_difference(set_yuwen))

#方法2print(set_yuwen^set_shuxue)

运行结果

python集合应用场景_十、python 集合的定义与使用相关推荐

  1. python类高级用法_十.python面向对象高级用法

    1.反射 1.1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的 ...

  2. python列表添加元组_【Python爬虫】列表、元组、集合练习

    列表: pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. list.append(obj) 在列表末尾添加新的对象 list.count(obj) 统计某个元素在列表 ...

  3. python集合的概念_用Python中的集合Set讲解演示高一数学集合的概念

    数学编程不分家,用Python可以方便的表示高中数学知识.现在以集合为例进行讲解,高一数学设计集的概念,讲解了交并补的相关知识,用Python中的集合类型可以方便的表示.同时可以借助数学知识更好的理解 ...

  4. 用python处理excel 数据分析_使用python集合进行EXCEL数据分析

    使用python集合进行EXCEL数据分析 标准库 Python真正精彩的方面之一是它具有非常丰富的模块标准库 ,无需安装第三方模块即可进行一些复杂的编程. 如果您在系统上有效安装了python,则可 ...

  5. python大牛自学心得_自学Python编程的第十天(希望有IT大牛看见的指点小弟我,万分感谢)---------来自苦逼的转行人...

    2019-09-20-23:24:15 今天逛论坛.逛知识星球时.逛b站up主时,都说到低学历,非科班的人最好不要去自学python 他们都说:如果我们学python是为了找工作,最好不要把pytho ...

  6. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  7. python中计算带分数_聊聊 python 数据处理全家桶(Redis篇)

    作者:星安果 来源:AirPython 前面两篇文章聊到了 python 处理 Mysql.Sqlite 数据库常用方式,本篇文章继续说另外一种比较常用的数据存储方式:Redis Redis:Remo ...

  8. python字典添加列表_【Python】对字典列表进行去重追加

    [TOC] 目标 现有字典列表 # A = [ {dict1}, {dict2} ] B = [ {dict3}, {dict2} ] C = [ {dict3}, {dict4} ] M = [A, ...

  9. 以下选项中python用于异常处理结构_《Python 程序设计》复习题

    目录 填空题 一.基础知识 二.序列 三.选择结构与循环结构和函数及面向对象.文件 选择题 一.Python 基础语法 二.基本数据类型 三.程序的控制结构 四.函数和代码复用 五.组合数据类型 六. ...

最新文章

  1. 写给程序员的最好的13条建议
  2. large_IPYi_09ef000018c21215
  3. UA MATH523A 实分析3 积分理论 概念与定理整理
  4. UA MATH636 信息论2 数据压缩
  5. 关系代数的自然连接符号_初中数学知识清单之代数式的认识
  6. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (8) - 流水线前端/分支预测
  7. 在数组中寻找出现次数超过数组长度一半的数
  8. 汉印HPRT XT130 打印机驱动
  9. 基于HTML/CSS/JS的动态元素周期表
  10. 《从零开始做运营》1~2章 读书笔记
  11. 项目实训(十二)——FPS游戏枪械射击弹孔及子弹散射
  12. 图论(十四)——图的着色
  13. 俩种方式找出Excel中相同和不同的数据
  14. 有道笔记无法同步(笔录)
  15. 抵抗不了“刷礼物”的诱惑,下架的斗鱼要上市有点难
  16. python坐标定位手机元素_Appium+Python之元素定位和操作
  17. 2019/12/25 学习总结(待填坑)
  18. 在 Kubernetes 实施混沌工程—— Chaos Mesh® 原理分析与控制面开发
  19. 商业银行信贷业务(一)
  20. Ubuntu16.04 LTS安装NVIDIA显卡驱动

热门文章

  1. Object address check - Jurisdiction code
  2. 怎样将employee 加到Territory里
  3. One order deletion tool
  4. 使用form上传文件到application server的另一种办法
  5. Java快速排序的调试
  6. Cloud for Customer的work center显示逻辑
  7. 在Mac里给Terminal终端自定义颜色
  8. Netweaver和CloudFoundry里的trace开关
  9. arduino读取matlab串口,Matlab Arduino实时串行通信,采样0.004 s
  10. python三角形判断白盒测试的代码_进化的测试 软件测试,自动化测试,白盒测试,Python...