递归/匿名函数/三元表达式/列表生成式/字典生成式/二分算法

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

>>>递归:

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

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次搞定,他每次都会取列表中间位置的值与目标值进行比较,然后根据结果,截取当前列表的不同区间,然后再用中间位置的值与目标值比较,直至列表内的值都比较完.

生命不息,学习不止:)

原文地址:https://www.cnblogs.com/hellozizi/p/11177673.html