今天朋友几篇文章介绍了改尾部、方法-的文章. 关联文章的地址
额,睡不着
第二章的尾部还有个关于写翻转棋的,临时先不写.
面下就是直接上Set和Map了,这里应用的是最简略的方法.也就是外部应用的list
先上Set
不过看上去杂复都很高的.
class Set: def __init__(self): self._theElements = list() def __len__(self): return len(self._theElements) def __contains__(self,element): return element in self._theElements def add(self,element): if element not in self: self._theElements.append(element) def remove(self,element): assert element in self,"The element must be in the set" self._theElements.remove(item) def __eq__(self,setB): if len(self) != len(setB): return False else: return self.isSubsetOf(setB) def isSubsetOf(self,setB): for element in self: if element not in setB: return False return True def union(self,setB): newSet = Set() newSet._theElements.extend(self._theElements) for element in setB: if element not in self: newSet._theElements.append(element) return newSet def interset(self,setB): newSet = Set() for element in setB: if element in self: newSet._theElements.append(element) return newSet def difference(self,setB): newSet = Set() for element in self: if element not in setB: newSet._theElements.append(element) return newSet def __iter__(self): return iter(self._theElements)
插入$O(n)$,求并,交.差,等相$O(n^2)$,当然面后有通过排序来行进优化的.
面下就是Map了,不过其中额定应用了一个简略的存保key,value. 这个类似于stl中的 std::pair.
码代如下:
class Map: def __init__(self): self._entryList = list() def __len__(self): return len(self._entryList) def __contains__(self,key): ndx = self._findPosition(key) return ndx is not None def add(self,key,value): ndx = self._findPosition(key) if ndx is not None: self._entryList[ndx].value = value return False else: entry = _MapEntry(key,value) self._entryList.append(entry) return True def valueOf(self,key): ndx = self._findPosition(key) assert ndx is not None,"Invalid map key" return self._entryList[ndx].value def remove(self,key): ndx = self._findPosition(key) ndx = self._findPosition(key) assert ndx is not None,"Invalid map key" self._entryList.pop(ndx) def __iter__(self): return _MapIterator(self._entryList) def _findPosition(self,key): for i in range(len(self)): if self._entryList[i].key == key: return i return None class _MapEntry: def __init__(self,key,value): self.key = key self.value = value class _MapIterator: def __init__(self,mapRef): self._curI = 0 self._mapRef = mapRef def __iter__(self): return self def next(self): if self._curI < len(self._mapRef): entry = self._mapRef[self._curI] self._curI += 1 return entry.key,entry.value else: raise StopIteration
嗯.都是很简略的.
睡觉拉..
文章结束给大家分享下程序员的一些笑话语录: 某程序员对书法十分感兴趣,退休后决定在这方面有所建树。花重金购买了上等的文房四宝。一日突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风 范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:hello world.