当前位置: 首页 > 科技观察

算法,最全的Python算法仓库_0

时间:2023-03-20 13:30:26 科技观察

学习编程,学习Python最好的方法就是实践,即使你是新手,只要不停地敲代码输出,就一定会有效果。有很多Python培训项目,尤其是在Github上。建议不管你是新手还是老司机,都应该看看。这里给大家推荐一个Github上的实践项目,algorithmwarehouse-algorithms。https://github.com/keon/algorithms包含了很多核心算法的Python实现,比如排序、图计算、回溯、队列、流计算、堆、搜索、压缩等等。本仓库支持第三方库的安装,在python中调用非常方便。先用pip安装:pip3installalgorithms然后导入相关模块调用,比如sort模块中的merge_sort归并排序算法。fromalgorithms.sortimportmerge_sortif__name__=="__main__":my_list=[1,8,3,5,6]my_list=merge_sort(my_list)print(my_list)举几个常见的算法案例。1.排序算法-桶排序defbucket_sort(arr):'''BucketSortComplexity:O(n^2)复杂度由nextSort决定'''#buckets的个数和makebucketsnum_buckets=len(arr)buckets=[[]forbucketinrange(num_buckets)]#将值分配到bucket_sortforvalueinarr:index=value*num_buckets//(max(arr)+1)buckets[index].append(value)#排序sorted_list=[]foriinrange(num_buckets):sorted_list.extend(next_sort(buckets[i]))returnsorted_listdefnext_sort(arr):#我们将在这里使用插入排序。foriinrange(1,len(arr)):j=i-1key=arr[i]whilearr[j]>keyandj>=0:arr[j+1]=arr[j]j=j-1arr[j+1]=键返回arr2。机器学习-最近邻插入值importmathdefdistance(x,y):"""[summary]HELPER-FUNCTION计算向量x和y之间的(欧立德)距离。参数:x{[tuple]}--[vector]y{[tuple]}--[vector]"""assertlen(x)==len(y),"向量必须有相同的长度"result=()sum=0foriinrange(len(x)):result+=(x[i]-y[i],)forcomponentinresult:sum+=component**2返回math.sqrt(sum)defnearest_neighbor(x,tSet):"""[summary]实现最近邻算法参数:x{[tupel]}--[vector]tSet{[dict]}--[trainingset]返回:[type]--[AND-的结果function]"""断言isinstance(x,tuple)andisinstance(tSet,dict)current_key=()min_d=float('inf')forkeyintSet:d=distance(x,key)ifddict:"""获取直方图表示形式:paraminput_list:listwithdifferentandunorderedvalues:returnhistogram:dictwithhistogramofinput_list"""#创建dict来存储直方图直方图={}#对每一个list值,给各自的histogramdict位置加1foriininput_list:histogram[i]=histogram.get(i,0)+1returnhistogram我个人觉得这个仓库的算法很完整,适合练习,可以试试