标签:imp tools 直接 注意 相加 快速 字典 使用 初始
函数在调用阶段,直接或间接的调用了自身
递归函数不应该一直递归下去,我们不考虑它到底循环多少次,我们只考虑它的结束条件
递归函数分为两个阶段
1 回溯;就是一次次重复的过程,这个重复的过程,每一次都应该比上一次简单
2 地推;一次次往回推导的过程
可以在一个有序的序列,快速的查找一个元素;
b = [1,2,3,4,5,6] a = 3 def func(l,n): if not l: return ret = len(l) // 2 if n > l[ret]: list_r = l[ret+1:] func(list_r,n) elif n < l[ret]: list_l = l[0:ret] func(list_l,n) else: print("找到了") func(b,a)
格式;返回值1 if 条件 else 返回值2
条件成立;返回值1
条件不成立;返回值2
注意;三元表达式,不要嵌套嵌套,达不到三元表达式的效果,不简洁,不明了
x = 1 y = 2 ret = x if x > y else y print(ret)
先for循环依次取出列表里面的每一个元素
然后交由if判断 条件成立才会交给for前面的代码
如果条件不成立 当前的元素 直接舍弃
l = [1,2,3,4,5,6] ret = [i+1 for i in l] print(ret) # [2, 3, 4, 5, 6, 7]
ll = ["name","age","hobby","play.py"] ret1 = ["%s.py"%i for i in ll if i.endswith(".py")] #可以加if,但不可以加else 如果条件成立就取出那个值放入for前面的字符串中 print(ret1) #
ret2 = ["%sNb"%i for i in ret1]
print(ret2)
for 循环 enumerate括号容器类型的元素作为字典的键或者value
前面用“:”来接收这两个元素
ret = {"%s.py"%j:"%s"%i for i,j in enumerate(["name","age","play","run"],)} print(ret)
没有名字的函数
匿名函数的特点;临时用完,临时就没了
格式;lambda 变量1,变量2: 返回值
左变,相当于函数的形参
右边,相当于函数的返回值
注意;匿名函数常不会单独使用,经常和内置方法一起使用
map 映射
l = [1,2,3,4,5,6]
print(list(map(lambda x:x+5,l))) # 基于for循环
zip 拉链 # 基于for循环 l1 = [1,2,] l2 = [‘jason‘,‘egon‘,‘tank‘] l3 = [‘a‘,‘b‘,‘c‘] print(list(zip(l1,l2,l3)))
l = [1,2,3,4,5,6] print(list(filter(lambda x:x != 3,l))) # 基于for循环
l = [‘jason‘,‘egon‘,‘nick‘,‘tank‘] print(sorted(l,reverse=True))
from functools import reduce l = [1,2,3,4,5,6] print(reduce(lambda x,y:x+y,l,19)) # 19初始值 第一个参数 # 当初始值不存在的情况下 按照下面的规律 # 第一次先获取两个元素 相加 # 之后每次获取一个与上一次相加的结果再相加
函数的递归,二分法,三元表达式,列表生成式,字典生成式,匿名函数,内置方法
标签:imp tools 直接 注意 相加 快速 字典 使用 初始
原文地址:https://www.cnblogs.com/cherish937426/p/11182102.html