鱼C论坛

 找回密码
 立即注册
查看: 1697|回复: 0

[技术交流] python学习笔记之lambda表达式

[复制链接]
发表于 2017-7-28 09:36:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
lambda表达式
  1. >>> def ds(x):
  2.    return 2 * x + 1

  3. >>> ds(5)
  4. 11
  5. >>> g = lambda x : 2 * x + 1
  6. >>> g(5)
  7. 11
复制代码
  • lambda表达式,分号前的x表示是参数,分号后是表达式
  • lambda表达式的作用
    • 写一些执行代码时,使用lambda表达式可以省下定义函数的过程
    • 使用次数很少的函数,不用刻意想函数名字
    • 简化代码的可读性
  • 有默认参数的函数,也可以携程lambda表达式
    1.   def fun_A(x, y=3):
    2.       return x * y
    复制代码
    可以写成
    1.   g = lambda x , y = 3 : x * y
    复制代码

  • 两个BIF介绍
    • filter()过滤器
      1.   >>> a = [0 , 1 , 2 , True , False]
      2.   >>> list(filter(None , a))
      3.   [1, 2, True]
      复制代码
      • filter()过滤器有两个参数filter(function or None , iterable),第一个参数可以是函数(用来过滤)或者是None,第二个参数为一个可迭代对象,即过滤的对象
        1.   >>> temp = range(10)
        2.   >>> def odd(x):
        3.          return x % 2

        4.   >>> list(filter(odd , temp))
        5.   [1, 3, 5, 7, 9]
        复制代码

      • 函数odd判断是否是奇数,filter第二个参数temp是一个列表,列表参数依次传入函数odd中进行判断后进行过滤
        1.   >>> list(filter(lambda x : x % 2 , temp))
        2.   [1, 3, 5, 7, 9]
        复制代码

      • 上示为lambda表达式和filter过滤器的结合使用
    • map()映射
      1.   >>> list(map(lambda x : x * 2 , range(10)))
      2.   [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
      复制代码
      • map()同样有两个参数,第一个参数是一个函数/表达式,其将第二个参数传入的数值按照函数/表达式处理后,返回处理后的数值



评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 00:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表