学习编程,学习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)ifd
