了解自定义函数def
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号,然后在缩进块中编写函数体,函数的返回值用
return语句返回。下面自定义一个求绝对值的my_abs函数:
小试牛刀-自定义函数实现二分查找算法
假设要在电话本里面找一个L开头的人,可以从头开始翻页,直到找到L开头的名字。但一般情况不会这么做,而是从中间翻开一页,然后看看L在翻开页的前面还是后面,然后继续查找,这种情况其实就是使用二分查找算法来解决问题了。
下面我们试试,在一个列表中查找一个元素,然后返回它在列表(前提是有序的列表)中的位置。比如my_list=[12,15,23,36,41,57,62,70,82,94]列表中有10个元素,我想查找82在第几位。根据二分算法,查找中间的数,即是第0位+第9位除以2,如果不是整数,那么系统自动向下取整,即第4位,第4位是41比82小,那么要在后面57,62,70,82,94中查找,第5位+第9位除以2,即第7位,第7位是70比82小,那么继续再后面82,90范围内查找,重复前面的方法,即可找到82,最后返回82的位置。运行情况如下,返回值为8,即需要查找的数为my_list[8]。
defbinary_search(list,item):#定义函数,list为查找的列表,item为查找的元素
low=0#锁定查找范围
high=len(list)-1#锁定查找范围
whilelow=high:#只要范围没有缩小到只有一个元素就继续查找
mid=(low+high)/2#计算中间元素位置
guess=list[mid]#得到中间元素
ifguess==item:#即找到想要的元素
returnmid#返回中间元素的位置
elifguessitem:#如果中间元素大于想要元素
high=mid-1#向前半部分查找
else:#如果中间元素小于想要元素
low=mid+1#向后半部分查找
my_list=[12,15,23,36,41,57,62,70,82,94]#查找的具体列表
printbinary_search(my_list,82)#查找元素82的位置
调试完成后是不是很有成就感呢