更多文章见微信【使用Python玩转数学】微信号:langhonglin0509

集合是数学中一个很重要的基本概念,是指具有某种特定性质的事物的总体,组成这个集合的事物称为该集合的元素。

例1 下面是一个简化的商品购买数据集T,每条数据t(i)表示一位顾客在超市一次购买商品的集合。

购买数据集T:

t(1):{牛奶、面包、牛肉}

t(2):{牛奶、猪肉}

t(3):{猪肉、火腿}

t(4):{牛奶、面包、火腿}

t(5):{牛奶、面包、衣服、火腿、牛肉}

t(6):{面包、衣服、牛奶}

t(7):{面包、牛奶、衣服}

对给定的集合来说,它的元素是确定的,任何一个元素要么在集合中,要么不在集合中。例如:集合t(1)的元素为牛奶、面包、牛肉,火腿就不在集合t(1)内,它在集合t(3)、t(4)、t(5)内。

例2有甲、乙、丙、丁、戊、己7个人,其中甲、乙、丙早饭喝的豆浆、吃的油条,丁早饭喝的豆浆,戊、己早饭喝的八宝粥、吃的肉包,问:

(1)   有多少人早餐喝豆浆?

(2)   早餐的种类有哪些?

(3)   找出甲和丁吃的不同早餐种类

可以用集合的概念来求解上面的问题,定义集合A、B、C、D、E、F,分别表示甲、乙、丙、丁、戊、己吃的早餐种类:

A  =  {豆浆, 油条}

B  =  {豆浆, 油条}

C  =  {豆浆, 油条}

D  =  {豆浆}

E  =  {八宝粥,肉包}

F  =  {八宝粥,肉包}

第1个问题是求喝豆浆的人数,该问题可以使用集合的交集运算,定义集合TEMP={豆浆},将A、B、C、D、E、F集合分别与集合TEMP进行交集运算,若交集运算后的结果不是空集,则计入喝豆浆的人数。

# 定义早餐集合
breakfast_list =[{"豆浆","油条"},{"豆浆","油条"},{"豆浆","油条"},{"豆浆"},{"八宝粥","肉包"},{"八宝粥","肉包"}
]# 计算早餐豆浆函数
defsoybean(data):# 计数器count = 0# 临时集合temp = {"豆浆"}# 遍历列表datafor item in data:# 求两个集合的交集       if item & temp:# 若交集结果不为空,count加1  count = count + 1return count# 程序入口
if __name__ =='__main__':count = soybean(breakfast_list)print("早餐喝豆浆人数:%d" % (count))

第2个问题是求早餐的种类有哪些,该问题可以使用集合的并集运算,对A、B、C、D、E、F集合连续求并集,计算的结果集合为早餐所有的种类。

# 定义早餐集合
breakfast_list =[{"豆浆","油条"},{"豆浆","油条"},{"豆浆","油条"},{"豆浆"},{"八宝粥","肉包"},{"八宝粥","肉包"}
]# 计算早餐所有种类
def all(data):# 临时集合temp = set()# 遍历列表datafor item in data:# 求两个集合的并集       temp = item | tempreturn temp# 程序入口
if __name__ =='__main__':temp = all(breakfast_list)print("早餐种类:%s" % (temp))

第3个问题可以求集合A和D的差集,A和D差集内的元素即为甲和丁吃的不同早餐种类。


# 定义早餐集合
breakfast_list =[{"豆浆","油条"},{"豆浆","油条"},{"豆浆","油条"},{"豆浆"},{"八宝粥","肉包"},{"八宝粥","肉包"}
]# 计算两个集合不同的早餐种类
defdifferent(s1,s2):# 返回s1和s2的差集return s1 - s2# 程序入口
if __name__ =='__main__':temp =different(breakfast_list[0],breakfast_list[3])print("甲和丁吃的不同早餐种类为:%s" % (temp))

区间是数学中最重要的数集,区间一般是指实数集合,表示一类实数的范围。设a和b是实数,且a<b,则数集:

{x | a < x< b}

称为开区间,可以记作(a,b),a和b称为开区间(a,b)的端点,a不包含在(a,b)区间内,b也不包含在(a,b)区间内。

若数集:{x | a ≤x ≤ b}

称为闭区间,记作[a,b],a和b也称为闭区间[a,b]的端点。类似数集:

[ a,b )  =  {x |a≤x <b}

( a,b ]  =  {x |a<x≤ b}

称为半开区间。

使用Python处理区间数据,可以使用interval库,在使用之前需要安装interval库,最简单的安装方法就是在shell窗口运行pip3 install interval命令。

例3  [0,1]闭区间内的操作


# 导入Interval库
from intervalimport Interval
# 创建[0,1]闭区间
close_interval =Interval(0,1,lower_closed=True, upper_closed=True)
# 判断0.001是否在[0,1]区间内
print(0.001 inclose_interval)
# 检验区间[0,1]左侧边界值
print(0 inclose_interval)
# 检验区间[0,1]右侧边界值
print(1 inclose_interval)

Interval类可以创建开区间、闭区间或半开区间,返回创建的区间对象,区间对象支持Python的in或not in运算符,用于判断一个给定的数值是否在区间内。

创建开区间(0,1):

close_interval =Interval(0,1,lower_closed=False, upper_closed=False)

创建半开区间(0,1]:

close_interval =Interval(0,1,lower_closed=False, upper_closed=True)

创建半开区间[0,1):

close_interval =Interval(0,1,lower_closed=True, upper_closed=False)

Interval类有三种区间的操作方法,分别是join方法,overlaps方法和adjacent_to方法。join方法是区间合并,将两个区间合并为一个区间,并返回新的区间对象。

例4  区间的合并操作

# 导入Interval库
from intervalimport Interval
# 创建[0,1]闭区间
interval_one =Interval(0,1,lower_closed=True, upper_closed=True)
# 创建[1,2]闭区间
interval_two =Interval(1,2,lower_closed=True, upper_closed=True)
# 区间合并
interval_merge =interval_one.join(interval_two)
print(interval_merge)

overlaps方法是判断两个区间是否有交集,若有交集则返回True。

例5  判断区间是否有交集

# 导入Interval库
from intervalimport Interval
# 创建[0,1]闭区间
interval_one =Interval(0,1,lower_closed=True, upper_closed=True)
# 创建[1,2]闭区间
interval_two =Interval(1,2,lower_closed=True, upper_closed=True)
# 判断区间是否有交集
print(interval_one.overlaps(interval_two))

interval_one的区间是[0,1],interval_two的区间是[1,2],两个区间存在交集,交集为数值1。

adjacent_to方法用于判断两个区间是否比邻,两个区间比邻是指即相邻又无交集。

例6  判断两个区间是否比邻


# 导入Interval库
from intervalimport Interval
# 创建[0,1)闭区间
interval_one =Interval(0,1,lower_closed=True, upper_closed=False)
# 创建[1,2]闭区间
interval_two =Interval(1,2,lower_closed=True, upper_closed=True)
# 判断区间是否比邻
print(interval_one.adjacent_to(interval_two))

区间interval_one是半开区间[0,1),区间interval_one是闭区间[1,2],两个区间没有交集,但这两个区间比邻,因为区间interval_one右侧端点是1,interval_two的左侧端点也是1。

编程训练营APP

创新在线学习模式,学习编程不再半途而废

安卓手机应用商店

搜索编程训练营下载

使用Python玩转高等数学(1):集合与区间相关推荐

  1. 使用Python玩转高等数学:三角函数

    使用Python玩转高等数学:三角函数 从三角函数开始,我们使用matplotlib绘制函数图像,matplotlib是图形绘制库,使用matplotlib可以方便的绘制函数图形,以及直方图.条形图. ...

  2. python 对数函数_使用Python玩转高等数学(4):对数函数

    更多文章见微信[使用Python玩转数学]微信号:langhonglin0509 指数函数的反函数: y = logax (a是常数,且a>0, a!=1) 叫做对数函数,它的定义域是区间(0, ...

  3. 使用Python玩转高等数学(2):幂函数

    幂函数的公式如下: y = x^a a是实数,函数的定义域要看a的取值而定.当a取任何实数时,函数在(0,+∞)区间内总有定义:当a>0时,函数在[0,+∞)区间内总有定义. y = x,y=x ...

  4. python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  5. python玩扫雷_Python玩转算法—扫雷

    此题来自LeetCode上的一道难度为Medium的题,说是有一张玩到一半的扫雷地图,接下来给你指定一个点击位置,让你预测点击之后,地图将发生怎么样的变化.看到这道题,瞬间让我想起了以前玩扫雷的日子, ...

  6. python生成一笔画_用Python玩烧脑小游戏《一笔画完》,瞬间闯到100关

    原标题:用Python玩烧脑小游戏<一笔画完>,瞬间闯到100关 " 昨天和朋友出去外面吃饭,吃完饭后朋友打开了一个小程序玩了起来...... 游戏长这样 大概玩法是:从地图中猫 ...

  7. 用Python玩转数据:python基础语法

    ---以下笔记来源于视频教程<用Python玩转数据> Python常用开发工具 Python标准的集成开发环境IDLE. 在linux下使用vim. eclipse+Pydev(可以不用 ...

  8. Python玩转大数据-张敏-专题视频课程

    Python玩转大数据-221人已学习 课程介绍         该课程采用时下后的编程语言Python讲解,囊括了当前火的大数据技术Spark/Hadoop/Hive知识,学习环境是基于Docker ...

  9. python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

最新文章

  1. Ubuntu安装 到移动硬盘--操作系统随身携带
  2. 手机怎么下载python并安装-CentOS下python的下载及安装
  3. JZOJ 5377. 【NOIP2017提高A组模拟9.19】开拓
  4. 使用python+OpenCV实现抖音特效“蓝线挑战”
  5. 面向对象知识点之statickeyword的使用
  6. 传360以原彩虹QQ研发团队为班底拟强推IM
  7. AMIO编辑器开发(四):五一劳动节的编程较量,C++语言的设计模式
  8. awk高级企业级使用案例
  9. C#学习笔记之线程 - 使用线程
  10. struts2核心工作流程与原理
  11. Roller 博客系统的搭建过程
  12. 关闭WINDOWS文件保护功能
  13. 2022年工具钳工(技师)最新解析及工具钳工(技师)试题及解析
  14. Python学习案例2——数独解题及出题程序
  15. 时空旅行[线段树分治][维护凸壳]
  16. 看完哪吒之魔童降世,突然想起以前考研时…
  17. 第四届橙瓜网络文学奖暨见证·网络文学20年评选年度奖项结果揭晓
  18. 苹果cmsv10蓝色简约响应式小鸟影视主题模板
  19. vue前端预览ofd格式的文件
  20. 面向切面编程(AOP)的理解

热门文章

  1. 行业动态 | 禾赛激光雷达亮点及发展趋势分析
  2. Java compareTo
  3. ActivityGroup中使用切换动画
  4. php soap 手册,SoapClient::SoapClient
  5. 简单替换office办公软件.
  6. 移动端/模拟器内安装完代理对应证书后仍警告安全证书有问题的解决方案
  7. Unity Mac版本破解方法
  8. 国金证券这么看新钢钒
  9. ERROR [BaseServer.start] - Port 4444 is busy, please choose a free port and specify it using -port..
  10. mysql 性能状态_MySQL性能状态查看方式