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]
  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8503477.html
Copyright © 2011-2022 走看看