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