• 2018.10.10python学习第十六天part1


    匿名函数

    1.什么是匿名函数?(what)

    没有函数名的函数

    对比有名函数:区别是有函数名,可以被重复多少次使用

    特点:只能在定义的时候使用,且只能使用一次

    2.为何要用匿名函数?(why)

    因为匿名函数没有函数名,所有在定义完以后就会被python的垃圾回收机制回收,无法重复使用,所以,当某个功能只需要写一次,没有重复的必要的时候,可以用匿名函数的形式,这样可以节省内存空间。 3.如何使用匿名函数?(how)

    (lambda x,y:x+y)()

    #print(lambda x,y:x+y)得到的是一个函数的内存地址

    #x,y是匿名函数的参数,x+y是函数的功能,()是调用这个函数

    4.匿名函数和其他函数的配合使用(max min map reduce)

    max

    eg1.

    salaries={
       'egon':5000,
       'alex':10000,
       'aaa':20000
    }          
    ##取出工资最高的人的名字`

    #有名函数

    def func(k):
    return salarier[k]
    res=max(salaries,key=func)

    #匿名函数

    res=max(salaries,key=lambda name:salaries[name])
    print(res)

    max函数指定key后: 1.将可迭代的对象变成迭代器对象 2.迭代出来的值当作key后面的函数的参数传给key后面的函数 3.调用key=后面的函数,将返回值作为比较依据

    eg2. nums=[10,-22,11,8] ##比较他们平方的大小

    #有名函数

    def func(k):
    return k**2

    print(max(nums,key=func))

    #匿名函数

    res=max(nums,key=lambda k:k**2)
    print(res)

     

    min

    和max的作用原理类似

    map

    映射:相当于每个值执行一边map的规则,然后得到相同个数的值

    names=['aaa','bbb','ccc'] ##在每个人的名字后面加上’sb‘

    #方式1:

    new_names=[]
    for name in names:
    new_names.append(name+'sb')
    print(new_names)

    #方式二 :三元表达式

    naw_names=[name+'sb' for name in names]
    print(new_names)

    #方式三:map映射

    res=map(lambda x:x+'sb',names)
    print(res)

     

    reduce

    减少

    #方式一:手动实现

    res=0
    for i in range(1,101):
    res+=i
    print(res)

    #方式二:三元表达式

    res=sum(i for i in range(1,101))
    print(res)

    #方式三:reduce+匿名函数

    from functools import deduce
    res=reduce(lambda x,y:x+y,[i for i in range(1,101)])
    print(res)

    #reduce的工作原理:三个参数 #1.合并规则 #2.可迭代对象 #3.初始值(没有指定初始值是,默认是None)

    filter

    过滤

    #方式一

    new_names=[]
    names=['aaa_sb','bbb_sb','ccc_sb','ddd']
    for name in names:
    if name.endwith('sb'):
    new_names.append(name)
    print(new_names)

    #方式二:list生成式

    names=['aaa_sb','bbb_sb','ccc_sb','ddd']
    new_names=[name for name in names if name.endwith('sb')]
    print(new_names)

    #方式三:filter+匿名函数

    res=filter(lambda name:name.endwith('sb'),names)
    print(res)

     

  • 相关阅读:
    软件项目功能测试框架(转载自51Testing软件测试)
    【性能测试】服务器资源监测工具sar安装
    Fiddler对https抓包时,提示"HTTPS decryption is disabled."原因及破解
    Postgresql空库发布或者部分空库,模式,表处理备份流程
    PostgreSQL完整备份与还原过程
    Excel:一列是源值随机加减某随机值,变为另一列的数值
    Postgresql个人维护库时,出现有用户在连接又找不到这个用户是谁的强制中断连接的方法;
    切换或者用户登录时 出现 显示 -bash-4.2$ 问题 的解决
    postgresql 9.4.4 源码安装
    搜索项中,文案修改导致搜索无法使用
  • 原文地址:https://www.cnblogs.com/hello-yuanjing/p/9767029.html
Copyright © 2020-2023  润新知