设为首页 收藏本站
查看: 1351|回复: 0

[经验分享] 用Python复习离散数学(一)

[复制链接]

尚未签到

发表于 2015-4-20 11:42:14 | 显示全部楼层 |阅读模式
    最近要复习离散数学,不想挂啊,但是又想编程,大家知道啦,程序员离不开代码啊,所用想边复习边写代码,所以就自己用代码去实现一下离散的知识点,当做复习,自知自己的Python很渣,也想借此巩固一下基础,哈哈,事不宜迟,开始吧!
    1.集合
    概念:集合是由指定范围内的某些特定对象聚集在一起构成的,元素就是集合中的每一个对象

    怎么用python实现集合呢,这个我自定义了一个类,这个类中有一个构造方法,底层我用列表是存储集合中的元素,用add方法可以添加元素,show方法就可以展示元素



class MySet():
__num = 0
def __init__(self):
self.s = []
def show(self):
self.str = '{'
for x in self.s:
if x == self.s[self.__num - 1]:
self.str += x
else:
self.str += x + ', '
self.str += '}'
print self.str
def add(self, element):
self.__num += 1
self.s.append(element)
  测试一下:



s = MySet()
s.add('a')
s.add('b')
s.show()
#结果
#{a, b}
  这样好样就有点味道了,爽爽的,杠杠的。
    1.1集合与集合的关系
    在这个这里我们要明白集合的几个特定性,集合的无序性,MySet类可以符合,但是还有个互异性我们就解决,互异性就是不能出现相同的元素,所以我们的add方法要改造一下:



    def add(self, element):
__flag = 0
for x in self.s:
if x == element:
__flag = 1
print '%s element is exist!' % element
if __flag == 0:
self.__num += 1
self.s.append(element)
  这样就解决了元素的互异性
    外延性原理:两个集合A和B相等,当且仅当它们有相同的元素,记为A=B,否则A与B不相等,记为A!=B
    程序怎么实现呢,我首先向MySet类添加下列方法,length方法拿到集合的长度,get方法根据索引那元素的值,checkExist方法检查元素是否存在在改集合中,setEqual方法就是判断集合相等的核心方法。



    def length(self):
return self.__num
def get(self, index):
if index >= 0 and index < self.__num:
return self.s[index]
else:
print 'no exist'
def checkExist(self, element):
for x in self.s:
if x == element:
return True
return False
def setEqual(self, setTemp):
if self.__num == setTemp.length():
for x in range(setTemp.length()):
if self.checkExist(setTemp.get(x)):
continue
else:
return False
return True
else:
return False
  测试一下:



s1 = MySet()
s1.add('a')
s1.add('b')
s2 = MySet()
s2.add('a')
s2.add('b')
print s1.setEqual(s2)
#结果
#True
    判断是否为子集,这个也就是包含关系,其实我很经常弄错谁包含谁的,所以现在要搞清楚了:如果B的每个元素都是A的元素,则成B是A的子集,也成称B被A包含,或者A包含B,就是大的包含小的,OK,理解了,然后就看看程序怎么实现,我们通过isSubset方法去实现判断:



    def isSubset(self, setTemp):
for x in range(setTemp.length()):
if self.checkExist(setTemp.get(x)):
continue
else:
return False
return True
    在集合中有一个非常特殊的集合,不含任何元素的集合,称为空集,谨记,空集是任何集合的子集,我们通过isEmptySet方法来判断这个集合是不是空集。



    def isEmptySet(self):
if self.__num == 0:
return True
else:
return False
    集合的运算:
    并运算:
  union方法及测试:



    def union(self, setTemp):
newSet = MySet()
for x in self.s:
newSet.add(x)
for x in range(setTemp.length()):
if newSet.checkExist(setTemp.get(x)):
continue
else:
newSet.add(setTemp.get(x))
return newSet
s1 = MySet()
s1.add('a')
s2 = MySet()
s2.add('b')
s2.add('a')
s2.add('c')
s3 = s1.union(s2)
s3.show()
    交运算:
  intersection方法的实现:



    def intersection(self, setTemp):
newSet = MySet()
for x in range(setTemp.length()):
if self.checkExist(setTemp.get(x)):
newSet.add(setTemp.get(x))
return newSet
    差运算:(A-B表示一个差集,集合中只有属于A自己独有的元素)
  subtraction方法的实现:



    def subtraction(self, setTemp):
newSet = MySet()
for x in self.s:
if setTemp.checkExist(x):
continue
else:
newSet.add(x)
return newSet
    补运算:(首先要判断一下两者的关系是不是正确的,然后再去算补集)
  complement方法的实现:



    def complement(self, setTemp):
newSet = MySet()
if setTemp.isSubset(self):
for x in range(setTemp.length()):
if self.checkExist(setTemp.get(x)):
continue
else:
newSet.add(setTemp.get(x))
return newSet
else:
print 'error in relation'
return newSet
    对称差运算:(对称差集就是两个集合的并集减去两个集合的交集,其实简单的说就是并集和交集的差集)
  sysmmetric方法的实现:



    def sysmmetric(self, setTemp):
newSet1 = self.union(setTemp)
newSet2 = self.intersection(setTemp)
return newSet1.subtraction(newSet2)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58828-1-1.html 上篇帖子: Python学习笔记——描述符 下篇帖子: Python生成器与yield
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表