zoukankan      html  css  js  c++  java
  • Python内置函数之匿名(lambda)函数

                  Python内置函数之匿名(lambda)函数

                                             作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    一.匿名函数

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 def func1(x):
     8     return x**2
     9 print(func1(10))
    10 del func1              #由于函数我们只调用了一次,调用完毕之后就可以删除了。
    11 
    12 func2= lambda x:x**2  #这就是一个没有名字的函数,第一个x表示函数的参数,之后的x表示返回的函数体,用lambda声明的函数我们称之为匿名函数。
    13 print(func2(10))
    14 
    15 
    16 """
    17 lambda函数我们称之为匿名函数:
    18     优点:
    19         1>.可以替换一些简单的功能的函数;
    20         2>.用关键字lambda声明匿名函数,其中冒号之前是匿名函数的参数,冒号之后则是具体的代码;
    21         3>.当函数调用完毕会被Python解释器释放内存,清理掉多余的内存空间;
    22     缺点:
    23         1>.不能完全替换有名称的函数且功能实现的功能简单,对一些复杂的逻辑就没法用匿名函数替换;
    24 """
    25 
    26 
    27 #以上代码执行结果如下:
    28 100
    29 100

    二.最大值(max)与最小值(min)

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 salaries = {
     8     "yinzhengjie":100000,
     9     "alex":800000,
    10     "agon":500000,
    11 }
    12 
    13 res = zip(salaries.values(),salaries.keys())        #调用内置函数的拉链函数将人名和薪资组合成一个元组;
    14 # print(max(res)[-1])                                 #取薪资最少的人名;
    15 # print(min(res)[-1])
    16 
    17 print(max(salaries,key=lambda x:salaries[x]))   #当然我们可以用匿名函数来做相同的功能;
    18 print(min(salaries,key=lambda x:salaries[x]))   #取薪资最少的人名;
    19 
    20 
    21 
    22 
    23 #以上代码执行结果如下:
    24 alex
    25 yinzhengjie

    三.映射函数(map)

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 
     8 list_num = [1,3,5,7,9]
     9 m = map(lambda x:x**2,list_num)                                     #映射函数map,这里我们是对一个列表案例做处理;
    10 print(list(m))
    11 
    12 names = ["yinzhengjie","wudonghang","fangheyi","taotao"]
    13 print(list(map(lambda item:item+"_NB",names)))
    14 
    15 
    16 
    17 #以上代码执行结果如下:
    18 [1, 9, 25, 49, 81]
    19 ['yinzhengjie_NB', 'wudonghang_NB', 'fangheyi_NB', 'taotao_NB']

    四.reduce函数

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 
     8 from functools import reduce
     9 print(reduce(lambda x,y:x+y,range(100),100)) #第一个参数是需要执行的代码,第二个参数是循环条件,第三个数字是指定一个起始值;
    10 
    11 
    12 # res = 0
    13 # for i in range(101):
    14 #     res += i
    15 # print(res)
    16 
    17 
    18 
    19 #以上代码执行结果如下:
    20 5050

    五.过滤函数(filter)

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 names = ['yinzhengjie_NB', 'wudonghang_NB', 'fangheyi_NB', 'taotao_NB',"wuzhiguang","hansenyu"]
     8 
     9 print(list(filter(lambda name:name.endswith("_NB"),names)))     #只过滤列表names中含有“_NB”字母的元素
    10 
    11 
    12 
    13 #以上代码执行结果如下:
    14 ['yinzhengjie_NB', 'wudonghang_NB', 'fangheyi_NB', 'taotao_NB']

    六.排序函数(sorted)

     1 #!/usr/bin/env python
     2 #_*_coding:utf-8_*_
     3 #@author :yinzhengjie
     4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
     5 #EMAIL:y1053419035@qq.com
     6 
     7 
     8 list_num = [1,4,3,6,7,9,2,8]
     9 print(sorted(list_num))                         #正序排序
    10 print(sorted(list_num,reverse=True))            #倒叙排序
    11 
    12 
    13 
    14 
    15 #以上代码执行结果如下:
    16 [1, 2, 3, 4, 6, 7, 8, 9]
    17 [9, 8, 7, 6, 4, 3, 2, 1]
  • 相关阅读:
    logback 指定每隔一段时间创建一个日志文件
    常用Linux命令
    Java stream的常见用法
    spring boot 整合js css 静态文件
    UnityWebRequest http post json通信
    spring boot 添加拦截器实现登陆检测
    游戏服务器业务处理线程管理
    netty如何实现零拷贝
    游戏服务器性能调优常用工具详解
    Java UTC时间与本地时间互相转换
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8503477.html
Copyright © 2011-2022 走看看