函数的递归,二分法,三元表达式,列表生成式,字典生成式,匿名函数,内置方法

Posted cherish937426

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的递归,二分法,三元表达式,列表生成式,字典生成式,匿名函数,内置方法相关的知识,希望对你有一定的参考价值。

1 递归函数

函数在调用阶段,直接或间接的调用了自身

递归函数不应该一直递归下去,我们不考虑它到底循环多少次,我们只考虑它的结束条件

递归函数分为两个阶段

  1 回溯;就是一次次重复的过程,这个重复的过程,每一次都应该比上一次简单

  2 地推;一次次往回推导的过程

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)

 

3 三元表达式

格式;返回值1 if 条件 else 返回值2

条件成立;返回值1

条件不成立;返回值2

注意;三元表达式,不要嵌套嵌套,达不到三元表达式的效果,不简洁,不明了

x = 1
y = 2

ret = x if x > y else y
print(ret)

 

4 列表生成式

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)

 

4 字典生成式

for 循环 enumerate括号容器类型的元素作为字典的键或者value
前面用来接收这两个元素

ret = "%s.py"%j:"%s"%i for i,j in enumerate(["name","age","play","run"],)
print(ret)

  注意;

    无论列表,生成式,或是字典生成式,都必须是能够for循环的

    字典生成式,与列表生成式,最大的不同就是

    列表是直接给for前面的变量接收,而字典前面接收的是两个变量,并且是以":"(冒号)连接

    列表 in 后面直接跟容器类型,而字典后面 in 跟的是 enumerate(容器类型)

5 匿名函数

没有名字的函数

匿名函数的特点;临时用完,临时就没了

 

格式;lambda 变量1,变量2: 返回值

左变,相当于函数的形参

右边,相当于函数的返回值

 

注意;匿名函数常不会单独使用,经常和内置方法一起使用

6 常用内置方法

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初始值  第一个参数
# 当初始值不存在的情况下 按照下面的规律
# 第一次先获取两个元素 相加
# 之后每次获取一个与上一次相加的结果再相加

 

 

 

 

以上是关于函数的递归,二分法,三元表达式,列表生成式,字典生成式,匿名函数,内置方法的主要内容,如果未能解决你的问题,请参考以下文章

十一函数递归,算法二分法,三元表达式,列表字典生成式,匿名函数,内置函数

三元表达式列表推导式生成器表达式递归匿名函数内置函数

三元表达式列表推导式生成器表达式递归匿名函数内置函数

三元表达式列表推导式生成器表达式递归匿名函数内置函数

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

函数 三元表达式 列表生成式 字典生成式 生成器表达式