zoukankan      html  css  js  c++  java
  • 递归/匿名函数/三元表达式/列表生成式/字典生成式/二分算法

    让在下揭开尔等的面纱,一探究竟:)

    >>>递归:

        递归是一个往复的过程,也就是由两个过程组成,一个是计算过程,一个是将值层层返回的过程,递归的奇妙之处,就在于自身调用自身,然后,过程遵循由复杂到简单,最终满足相应条件后,退出,返回结果.说了一大堆,不过直接上代码:

    test_list = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,]]]]]]]]]]]]]]
    res = 0
    
    def sum_list(test_list, res):
    
        for i in test_list:
            if type(i) == int:
                res += i
                if len(test_list) == 1:
                    return res
            else:
                return sum_list(i,res)
    
    print(sum_list(test_list,res))

    图中步骤D,请格外注意,若缺少,则导致最终结果无法返回.

    >>>匿名函数:

        匿名函数的定义是:因为没有名字,所以不能被调用,在A处使用,就在A处编写,然后在A处执行,执行完毕返回结果后自动销毁.

    x = 1
    y = 2
    def my_sum(x,y):
        return x+y
    print(my_sum()) #下面这行代码的功能等价于上面的函数 print((lambda x,y:x+y)(x,y))

    lambda一般和内置函数或自定义函数配合使用.

    >>>三元表达式

      三元表达式,比较简单粗暴.建议不要多个三元表达式嵌套在一起,因为会导致代码不易被阅读.

    x = 1
    y = 2
    
    print(x if x > y else y)   #如果x > y,则返回结果是x,否则返回y.在做简单判断时,非常实用.

    >>>列表生成式

      列表生成式,可以快速生成一个列表,也可以快速对一个列表的内容进行修改

    >>>字典生成式

       字典生成式,可以快速生成一个字典,也可以快速对一个字典的内容进行修改

     

    >>>二分算法

      首先若要使用二分算法,列表必须是有序的.其原理,就是将事物细分在细分的结果中和目标值进行比对,从而实现对目标值的查找.且效率相对较高.

      现有列表

      test_liset = [1,2,3,4,5,6,7]

      如果想确定4是不是在列表里,如果用for循环去将列表中的元素取出,再进行比较,找是同样可以找到,但是需要经历4次比较.

      而使用二分算法,就不一样了,1次搞定,他每次都会取列表中间位置的值与目标值进行比较,然后根据结果,截取当前列表的不同区间,然后再用中间位置的值与目标值比较,直至列表内的值都比较完.

    生命不息,学习不止:)

  • 相关阅读:
    QT学习笔记2
    QT学习笔记1
    图像中区域生长算法的详解和实现
    图像识别中的深度学习 转
    Appium基础环境搭建(windows)---基于python
    selenium实现文件上传方法汇总(AutoIt、win32GUI、sengkeys)---基于python
    selenium中的三种等待方式(显示等待WebDriverWait()、隐式等待implicitly()、强制等待sleep())---基于python
    水仙花数---基于python
    九九乘法表实现---基于python
    selenium元素定位不到之iframe---基于python
  • 原文地址:https://www.cnblogs.com/hellozizi/p/11177673.html
Copyright © 2011-2022 走看看