您现在的位置是:课程教程文章
python链表法的优缺点
2023-12-13 23:31课程教程文章 人已围观
1、优点,方便删除记录,直接处理数组对应下标的子数组。平均搜索速度快。如果有冲突,只需要查询子数组。
2、缺点,使用指针导致查询速度较慢,内存占用可能较高,不适合序列化。
而开放式寻址法的优缺点与链表法相反。因为Python的一切都是基于Dict的,都需要序列化,所以选择了开放式寻址法。
实例
#keys函数 #!/usr/bin/envpython #coding=utf-8 classDict: def__init__(self,num): self.__solts__=[] self.num=num for_inrange(num): self.__solts__.append([]) defhash_fun(self,key,num): hashval=0 x=key ifx<0: print"thekeyislow" return whilex!=0: hashval=(hashval<<3)+x%10 x/=10 returnhashval%num defput(self,key,value): i=self.hash_fun(key,self.num)%self.num forp,(k,v)inenumerate(self.__solts__[i]): ifk==key: break else: self.__solts__[i].append((key,value)) return self.__solts__[i][p]=(key,value) defget(self,key): i=self.hash_fun(key,self.num)%self.num fork,vinself.__solts__[i]: ifk==key: returnv raiseKeyError(key) #keys函数 defkeys(self): ret=[] forsoltinself.__solts__: fork,_insolt: ret.append(k) returnret def__getitem__(self,key): returnself.get(key) def__setitem__(self,key,data): self.put(key,data) H=Dict(13) H[54]="cat" H[26]="dog" H[93]="lion" H[17]="tiger" H[77]="bird" H[31]="cow" H[44]="goat" H[55]="pig" H[20]="chicken" printH.get(54) H.put(13,"duck") printH.__solts__ printH.keys()
以上就是python链表法的优缺点,希望对大家有所帮助。更多Python学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
课程教程:python链表法的优缺点上一篇:python有序Dict的原理
下一篇:没有了