使用Python玩转高等数学(1):集合与区间
更多文章见微信【使用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):集合与区间相关推荐
- 使用Python玩转高等数学:三角函数
使用Python玩转高等数学:三角函数 从三角函数开始,我们使用matplotlib绘制函数图像,matplotlib是图形绘制库,使用matplotlib可以方便的绘制函数图形,以及直方图.条形图. ...
- python 对数函数_使用Python玩转高等数学(4):对数函数
更多文章见微信[使用Python玩转数学]微信号:langhonglin0509 指数函数的反函数: y = logax (a是常数,且a>0, a!=1) 叫做对数函数,它的定义域是区间(0, ...
- 使用Python玩转高等数学(2):幂函数
幂函数的公式如下: y = x^a a是实数,函数的定义域要看a的取值而定.当a取任何实数时,函数在(0,+∞)区间内总有定义:当a>0时,函数在[0,+∞)区间内总有定义. y = x,y=x ...
- python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)
本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...
- python玩扫雷_Python玩转算法—扫雷
此题来自LeetCode上的一道难度为Medium的题,说是有一张玩到一半的扫雷地图,接下来给你指定一个点击位置,让你预测点击之后,地图将发生怎么样的变化.看到这道题,瞬间让我想起了以前玩扫雷的日子, ...
- python生成一笔画_用Python玩烧脑小游戏《一笔画完》,瞬间闯到100关
原标题:用Python玩烧脑小游戏<一笔画完>,瞬间闯到100关 " 昨天和朋友出去外面吃饭,吃完饭后朋友打开了一个小程序玩了起来...... 游戏长这样 大概玩法是:从地图中猫 ...
- 用Python玩转数据:python基础语法
---以下笔记来源于视频教程<用Python玩转数据> Python常用开发工具 Python标准的集成开发环境IDLE. 在linux下使用vim. eclipse+Pydev(可以不用 ...
- Python玩转大数据-张敏-专题视频课程
Python玩转大数据-221人已学习 课程介绍 该课程采用时下后的编程语言Python讲解,囊括了当前火的大数据技术Spark/Hadoop/Hive知识,学习环境是基于Docker ...
- python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)
关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...
最新文章
- Ubuntu安装 到移动硬盘--操作系统随身携带
- 手机怎么下载python并安装-CentOS下python的下载及安装
- JZOJ 5377. 【NOIP2017提高A组模拟9.19】开拓
- 使用python+OpenCV实现抖音特效“蓝线挑战”
- 面向对象知识点之statickeyword的使用
- 传360以原彩虹QQ研发团队为班底拟强推IM
- AMIO编辑器开发(四):五一劳动节的编程较量,C++语言的设计模式
- awk高级企业级使用案例
- C#学习笔记之线程 - 使用线程
- struts2核心工作流程与原理
- Roller 博客系统的搭建过程
- 关闭WINDOWS文件保护功能
- 2022年工具钳工(技师)最新解析及工具钳工(技师)试题及解析
- Python学习案例2——数独解题及出题程序
- 时空旅行[线段树分治][维护凸壳]
- 看完哪吒之魔童降世,突然想起以前考研时…
- 第四届橙瓜网络文学奖暨见证·网络文学20年评选年度奖项结果揭晓
- 苹果cmsv10蓝色简约响应式小鸟影视主题模板
- vue前端预览ofd格式的文件
- 面向切面编程(AOP)的理解
热门文章
- 行业动态 | 禾赛激光雷达亮点及发展趋势分析
- Java compareTo
- ActivityGroup中使用切换动画
- php soap 手册,SoapClient::SoapClient
- 简单替换office办公软件.
- 移动端/模拟器内安装完代理对应证书后仍警告安全证书有问题的解决方案
- Unity Mac版本破解方法
- 国金证券这么看新钢钒
- ERROR [BaseServer.start] - Port 4444 is busy, please choose a free port and specify it using -port..
- mysql 性能状态_MySQL性能状态查看方式