鱼C论坛

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

[技术交流] 《零基础入门学习python》第二十一讲笔记:函数:lambda表达式

[复制链接]
发表于 2017-7-31 11:51:23 | 显示全部楼层 |阅读模式

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

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

x
lambda作用:能省下定义函数过程,也就省得给函数命名,使得代码更为精简

  1. >>> def ds(x):
  2.              return 2 * x + 1     # return 定义返回值

  3. >>> ds(5)
  4. 11
  5. >>> lambda x : 2 * x + 1     # lambda构建一个函数对象,  在冒号的前边是原函数的参数,在冒号的后边是原函数的返回值
  6. <function <lambda> at 0x000000000312A748>
  7. >>> g = lambda x : 2 * x + 1   #  给一个匿名函数一个变量名字
  8. >>> g(5)  # 直接调用
  9. 11
复制代码

  1. >>> def add(x,y):  # 两个参数
  2.     return x + y

  3. >>> add(3,4)
  4. 7
  5. >>> lambda x,y : x + y  # 一样lambda表达式构建一个匿名函数
  6. <function <lambda> at 0x000000000312AB48>
  7. >>> g = lambda x,y : x + y  
  8. >>> g(3,4)
  9. 7
复制代码


两个牛逼的BIF:filter() , map()

filter():过滤器   >>> help(filter),看到filter有2个参数,第一个要么是None要么是函数,第二个参数是可迭代的数,功能是把第二个参数作为前面函数的实参,然后把得到的结果非True的给过滤掉


  1. >>> filter(None,[1,0,False,True])   # 这里看,返回的是一个对象,当第一个参数为None时,功能是把列表里非True给过滤掉
  2. <filter object at 0x000000000312E1D0>
  3. >>> list(filter(None,[1,0,False,True]))  # 把对象转换为列表
  4. [1, True]

  5. >>> def odd(x):
  6.              return x % 2

  7. >>> temp = range(10)
  8. >>> show = filter(odd,temp)   # 这里odd不加(),只要给函数名字就可以了,让filter过滤器知道去哪里找odd就可以了
  9. >>> list(show)
  10. [1, 3, 5, 7, 9]

  11. >>> list(filter(lambda x : x % 2 ,range(10)))   # 加上lambda, 一行代码相当于上面几行代码,求0~10所有的奇数
  12. [1, 3, 5, 7, 9]
复制代码


map():映射,有两个参数,分别为函数和一个可迭代的序列。功能是将序列的每一个元素作为函数的参数进行运算加工,直到可迭代的序列每个都加工完毕,返回所有加工后的元素构成的新序列。

  1. >>> list(map(lambda x : x * 2 ,range(10)))   # map()  + lambda
  2. [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
复制代码


评分

参与人数 2荣誉 +2 鱼币 +6 贡献 +2 收起 理由
小甲鱼 + 4 支持楼主!
破渔网兜兜 + 2 + 2 + 2 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-26 04:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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