zoukankan      html  css  js  c++  java
  • 函数(五)二分法与匿名函数

    二分法

    #递归实现二分查找 li是列表   item是要查找的元素
    def merge_search( li ,item ):
        #传来的列表每次都是新生成的,如果发现里面没有元素,则是查找到尽头都没找到
        if not li :
            return False
    
        mid = len(li)//2   #mid记录li的中间位置
        #检查一下 如果中间这个数就是要找的元素 返回真
        if li[mid] == item :
            return True
        # 如果mid比item大,说明item可能会出现在mid左边,对左边再查找
        elif li[mid]> item :
            return merge_search( li[:mid] ,item )
        # mid 比item小,说明item有可能在mid右边,对右边再查找
        else :
            return merge_search( li[mid+1:] , item )
    
    if __name__ == '__main__':
        li = [1,2,3,4,5,6,7]
        print( merge_search(li , 0) )   #False
        print( merge_search(li , 1) )   #True
    

    匿名函数

    匿名函数,他没有绑定名字,使用一次即被收回,加括号既可以运行。

    lambda关键字

    # 普通python函数
    def func(a, b, c):
        return a + b + c
        
    print(func(1, 2, 3))
    # 返回值为6
    
    
    # lambda匿名函数
    f = lambda a, b, c: a + b + c
    
    print(f(1, 2, 3))
    # 返回结果为6
    

    冒号:之前的a,b,c表示它们是这个函数的参数。

    匿名函数不需要return来返回值,表达式本身结果就是返回值。

    lambda 只是一个表达式,函数体比 def 简单很多。

    lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

    lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

    匿名函数优点

    使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。

    对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题

    使用lambda在某些时候然后代码更容易理解

    内置函数

    面向过程编程

    面向过程:核心是过程二字,过程即解决问题的步骤,基于面向过程去设计程序就像是在设计,流水线式的编程思想,在设计程序时,需要把整个流程设计出来, 一条工业流水线,是一种机械式的思维方式

    优缺点

    优点:程序体系结构清晰,可以把复杂的问题简单化,流程化

    缺点:可扩展性差,一条流线只是用来解决一个问题,所以说面向过程的应用多为不需要经常变化的软件

  • 相关阅读:
    Django框架第九篇--Django和Ajax、序列化组件(serializers)、自定义分页器、模型表choice参数
    Django框架之第五篇(模板层) --变量、过滤器(|)、标签(% %)、自定义标签、过滤器、inclusion_tag,模板的继承、模板的注入、静态文件
    Django框架学习易错和易忘点
    守护线程
    Thread其他属性和方法
    进程与线程的区别
    开启线程
    关闭屏幕输出分屏显示
    生产者消费者模型
    队列
  • 原文地址:https://www.cnblogs.com/einsam/p/10980574.html
Copyright © 2011-2022 走看看