码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-07-13 21:30:53      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:imp   tools   直接   注意   相加   快速   字典   使用   初始   

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

 

 

 

 

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

标签:imp   tools   直接   注意   相加   快速   字典   使用   初始   

原文地址:https://www.cnblogs.com/cherish937426/p/11182102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!