如何学Python 第十四课 lambda和lambda操作符,另一些列表操作

第十四课 lambda和lambda操作符,另一些列表操作

上节课我们介绍了一些列表的高级使用方法。在本节,我们更进一步,讨论一下lambda和lambda操作符。(嗯,我不会讨论戈登弗里曼的。。。)

我会先介绍lambda并给出一个例子,然后挨个介绍操作符。

什么是lambda?

Lambda可以帮你快速构建起简单的函数。如果你不了解什么叫做函数,请回头看看第十课。

平时我们创建函数的时候,都需要先定义,然后再设计好这个函数要返回什么东西。Lambda表达式可以简化这一过程,把一切浓缩进一行代码里;有了lambda,我们就可以告别过去繁琐的函数创建过程。来一起看个例子。

使用Lambda

在这个例子中,我们会先用传统方式创建一个函数,这个函数会返回传入参数的二倍。然后用lambda创建一个具有相同功能的函数。

传统方式:

Lambda方式:

可以看到,lambda表达式必须被赋值给某个变量才能发挥作用;然而这也比定义一个新函数要快得多。

使用lambda表达式要求我们先输入lambda,然后是需要输入的参数,最后是返回的值。

Lambda操作符

我们来简要介绍一下lambda操作符。

fliter() - 这个可以被用来过滤原有的list,并把过滤结果放进新的list里。

map() - 这个可以同时对list里的所有元素进行操作,并以列表方式给出返回值

reduce()- 这个可以队列表顺序执行算术运算

小提示:这些操作符也可以被单独当成函数使用,但是我们通常看到它们和lambda表达式一起使用。下面我们分别单个介绍一下

filter操作符

我们来说说如何使用filter()操作符。这个操作符可以用来过滤(filter,如它的名字一样)现有列表里的内容,并把符合要求的放进新列表里。我们会借助range()来完成演示。

filter接受两个参数,第一个是lambda表达式提供的过滤条件,第二个是要进行过滤的现有列表。最后,filter返回一个符合条件的列表类型。

map操作符

如果我们想把列表里的所有元素都进行某一个操作,可以用map操作符。我们依旧用range()生成的列表作为待操作的列表。

在上面的操作中,range(0,51)所返回的列表中的每一个元素都被乘上了2.

reduce操作符

reduce操作符要比上面两个难理解一些。它对列表进行顺序的迭代。为了更好理解,我们这次不使用range()。在这个示例中,我们把列表里的所有元素相加。下面是用于演示的list:

接下来进行reduce操作。

当我们进行reduce操作的时候,会从0开始,0+1得到1,然后1+2得到3,然后3+3得到6,6+4得到10……

总结

今天我们学的东西有点多,而且有一部分不是太好理解。希望大家对于各种概念和语法还是可以理解的。用好这些东西可以让我们写出更具有效率、可读性更高的代码。前提是,你在恰当的地方使用他们。

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2016-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏http://www.cnblogs.com

内置函数filter()和匿名函数lambda解析

一.内置函数filter filter()函数是 Python 内置的一个高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是...

333120
来自专栏Kiba518

C#语法——委托,架构的血液

微软用delegate关键字来声明委托,delegate与int,string,double等关键字一样。都是声明用的。

7430
来自专栏java一日一条

掌握 Java 8 Lambda 表达式

Lambda 表达式 是 Java8 中最重要的功能之一。使用 Lambda 表达式 可以替代只有一个函数的接口实现,告别匿名内部类,代码看起来更简洁易懂。La...

11820
来自专栏个人随笔

深入理解Java异常处理机制 (笼统篇)

8510
来自专栏大数据挖掘DT机器学习

Python NLTK 处理原始文本

关于处理原始文本部分导入语句: >>> from __future__ import division >>> import nltk,re,pprint ...

29850
来自专栏Linyb极客之路

JVM 方法内联

调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。

22440
来自专栏码洞

看完Java的动态代理技术——Pythoner笑了

Java的动态代理常用来包装原始方法调用,用于增强或改写现有方法的逻辑,它在Java技术领域被广为使用,在阿里的Sofa RPC框架序列化中你能看到它的身影,H...

10530
来自专栏大前端_Web

javascript语言精粹(蝴蝶书)-笔记

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

38630
来自专栏Java 源码分析

Java8新特性

1.HashMap 首先就是对 java 的 HashMap 进行了修改,以前是通过 hashCode 方法来判断他们的地址值是否一样 ,如果相同的话再使用 e...

36840
来自专栏用户2442861的专栏

python编码问题

我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。

17110

扫码关注云+社区

领取腾讯云代金券