让在下揭开尔等的面纱,一探究竟:)
>>>递归:
递归是一个往复的过程,也就是由两个过程组成,一个是计算过程,一个是将值层层返回的过程,递归的奇妙之处,就在于自身调用自身,然后,过程遵循由复杂到简单,最终满足相应条件后,退出,返回结果.说了一大堆,不过直接上代码:
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次搞定,他每次都会取列表中间位置的值与目标值进行比较,然后根据结果,截取当前列表的不同区间,然后再用中间位置的值与目标值比较,直至列表内的值都比较完.