了解自定义函数def

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号,然后在缩进块中编写函数体,函数的返回值用

return语句返回。下面自定义一个求绝对值的my_abs函数:

二元元组Python python二元函数如何编写_二分查找算法

小试牛刀-自定义函数实现二分查找算法

假设要在电话本里面找一个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]。

二元元组Python python二元函数如何编写_python实现二分查找_02

def binary_search(list,item):#定义函数,list为查找的列表,item为查找的元素

low=0#锁定查找范围
high=len(list)-1#锁定查找范围
while low<=high:#只要范围没有缩小到只有一个元素就继续查找
mid=(low+high)/2#计算中间元素位置
guess=list[mid]#得到中间元素
if guess==item:#即找到想要的元素
return mid#返回中间元素的位置
elif guess>item:#如果中间元素大于想要元素
high=mid-1#向前半部分查找
else:#如果中间元素小于想要元素
low=mid+1#向后半部分查找
my_list=[12,15,23,36,41,57,62,70,82,94]#查找的具体列表
print binary_search(my_list,82)#查找元素82的位置
调试完成后是不是很有成就感呢