Python中lambda用法和filter()函数

“微信公众号”

目录

1. lambda用法。

2. filter()用法。


1. lambda用法。

Python使用lambda来创建匿名函数。

  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

举个例子:

  1. func=lambda x:x+2
  2. print(func(1))
  3. #3
  4. print(func(2))
  5. #4
  6. #以上lambda等同于以下函数
  7. def func(x):
  8. return(x+2)

可以这样理解:lambda作为一个表达式,定义了一个匿名函数。上例中代码x为函数入口参数,x+2为函数体。用lambda写法,简化了函数定义的书写形式,使代码更为简洁。

在Python中,还有几个定义好的全局函数:filter()、map()、reduce()。这些全局函数可以和lambda配合使用。

2. filter()用法。

filter(函数,序列)函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

注意:Python2.7返回的是列表,Python3.x返回的是迭代器对象。

举例子:

  1. def is_odd(n):
  2. return n%2==1
  3. newlist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
  4. print(newlist)
  5. # Python3.6结果:<filter object at 0x00000184ED881358>
  6. # Python2.x结果:[1, 3, 5, 7, 9]
  7. # Python3.6返回的是迭代器对象,可以转换成list
  8. print(list(newlist))
  9. # [1, 3, 5, 7, 9]
  10. # -------------------------------------------
  11. # 以上函数可以用lambda表达式书写
  12. newlist = list(filter(lambda n:n%2==1,[1,2,3,4,5,6,7,8,9,10]))
  13. print(newlist)
  14. # [1, 3, 5, 7, 9]
  15. # -------------------------------------------
  16. # 在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。
  17. # 以上函数还可以写成如下:
  18. newlist = list(x for x in [1,2,3,4,5,6,7,8,9,10] if x%2==1)
  19. print(newlist)
  20. # [1, 3, 5, 7, 9]

上面例子中的filter()的作用,非常简单清晰。但是,Python是否非要使用lambda才能做到这样的简洁程度呢?在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。 

上面的例子还可以写成: newlist = list(x for x in [1,2,3,4,5,6,7,8,9,10] if x%2==1),是比lambda的方式更容易理解。

Reference:

【1】https://www.cnblogs.com/AlwaysWIN/p/6202320.html

【2】http://www.runoob.com/python/python-func-filter.html

【3】http://www.runoob.com/python/python-functions.html

(0)

相关推荐

  • 理解lambda表达式,为什么用它?

    初学者接触 lambda表达式 ,觉得语法很清奇,正好今天看到 python weekly 推送了一个youtube的视频教程,今天大邓就顺便领大家简单认识一下lambda语法. up主:PyLeni ...

  • 看完这道题,你才能领略Python的魅力!

    近日浏览LeetCode,发现了一道很有意思的小题目.当我尝试用Python解答的时候,居然动用了集合.map函数.zip函数.lambda函数.sorted函数,调试过程还涉及到了迭代器.生成器.列 ...

  • Python中的函数式编程教程,学会用一行代码搞定所有内容

    https://m.toutiao.com/is/JEUURVQ/ 前言 在本文中,您将了解什么是函数范型,以及如何在Python中使用函数式编程.在Python中,函数式编程中的map和filter ...

  • Python中的匿名函数

    原创 DBA随笔 DBA随笔 1周前 // Python中的匿名函数 // 写python的时候,大多数场景下,我都是if else选手,因为最核心的逻辑几乎都是通过if else语句来实现的.关于匿 ...

  • Python高阶函数

    该篇中主要介绍什么是高阶函数,高阶函数的用法以及几个常见的内置的高阶函数. 什么是高阶函数? 高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身, ...

  • 说说在 Python 中如何实现输出指定函数运行时长的装饰器

    假设我们需要一个可以输出某个函数运行时长的装饰器. 1 基础实现 一种可能的定义方式为: 这里利用函数装饰器,在 clock(func) 函数内部定义了一个 clock(*args) 函数,定义好后直 ...

  • 说说Python中的help()和dir()函数?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • UC头条:在Python中使用Lambda函数的5种用法

    引言 Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一. 支持多编程范例的 Python 也提供了一种简单的方法来定义 lambda 函数. 用 Python 编写 lambda 函数 ...

  • Python 中的函数装饰器和闭包

    函数装饰器可以被用于增强方法的某些行为,如果想自己实现装饰器,则必须了解闭包的概念. 装饰器的基本概念 装饰器是一个可调用对象,它的参数是另一个函数,称为被装饰函数.装饰器可以修改这个函数再将其返回, ...

  • python中的内置函数

    前言 本人只在csdn写博客 内置函数 介绍 一. 数学运算 abs()求绝对值函数 round() 近似取值 pow()求指数 divmod()求商和余数 max()求最大值和min()求最小值 s ...

  • Python中关于eval函数与ast.literal

    eval函数在Python中做数据类型的转换还是很有用的.它的作用就是把数据还原成它本身或者是能够转化成的数据类型.那么eval和ast.literal_val()的区别是什么呢?本文将大家介绍关于P ...

  • python测试开发django-98.views视图函数中request参数详解

    前言 django 在 views 视图函数中会传一个request参数,request 是 HttpRequest 的实例对象. 当请求一个页面时,Django 创建一个HttpRequest对象, ...

  • 说说Python中的lambda表达式?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...