021,lambda 表达式

 匿名函数: 快速定义单行的最小函数,是从lisp借用来的,可以用在任何需要函数的地方

>>> def ds(x):
    return 2*x + 1
 
>>> ds(5)
11
>>> lambda x : 2*x + 1
<function <lambda> at 0x025913D8>
>>> g = lambda x : 2*x + 1
>>> g(5)
11
  
>>> def add(x,y):
    return x + y
 
>>> add(3,4)
7
>>> lambda x,y : x + y
<function <lambda> at 0x025009C0>
>>> g = lambda x,y : x + y
>>> g(3,4)
7
 

python写一些执行脚本时候,使用lambda就可以省下定义函数的过程,比如说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。
    对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候给函数起个名字也是比较头疼的问题,使用lambda就不需要考虑命名的问题了。 
    简化代码的可读性,由于普通的函数阅读经常要调到开头def定义部分,使用lambda函数可以省去这样的步骤。 
基础:lambda语句中,冒号前是参数,可以有多个用逗号隔开,冒号右边的返回值。其实lambda语句构造的是一个函数对象。
例子:

>>> def myadd(x,y):
    return (x + y)
 
>>> from functools import reduce
>>> sum = reduce(myadd,(1,2,3))
>>> sum
6
  

重要的bif 
filter() 过滤器,先看python的解释:

>>> help(filter)
Help on class filter in module builtins:
 
class filter(object)
 |  filter(function or None, iterable) --> filter object
 |  
 |  Return an iterator yielding those items of iterable for which function(item)
 |  is true. If function is None, return the items that are true.
意思大概是,filter有两个参数 ,第一个参数可以是None对象也可以是一个函数function,第二个参数是可迭代的数据,如果第一个参数是个函数的话,将第二个可迭代数据里的每个元素作为函数的参数进行计算,把返回True的值筛选出来,并成一个列表,如果第一个参数为None,则将第二个参数里的True的值给筛选出来。

鸟语不懂,举例说明:

>>> filter(None,[1,0,False,True])
<filter object at 0x024F4810>
>>> list(filter(None,[1,0,False,True]))
[1, True]
>>> 
 是把任何非True的内容过滤掉。

筛选奇数:
普通写法:

>>> def odd(x):
    return x % 2
 
>>> temp = range(10)
>>> show = filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]
>>> 
 用lambda表达式写法:

>>> list(filter((lambda x : x% 2),range(10)))
[1, 3, 5, 7, 9]
>>> 
 
map()

class map(object)
 |  map(func, *iterables) --> map object
 |  
 |  Make an iterator that computes the function using arguments from
 |  each of the iterables.  Stops when the shortest iterable is exhausted.
 将序列的每个元素作为函数的参数进行运算加工,直到可迭代序列的每个元素都加工完毕,返回所有加工后的元素构成的新序列

>>> list(map(lambda x : x * 2 , range (10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> 

说好的练习题呢?!!

021,lambda 表达式的更多相关文章

  1. 小甲鱼零基础python课后题 P22 021函数:lambda表达式

    0.请使用lambda表达式将下边函数转变为匿名函数 def fun_A(x,y=3): return x*y 答: lambda x,y=3:x*y 1.请将下边的匿名函数转变为普通的屌丝函数 la ...

  2. 第021讲:函数:lambda表达式

    0. 请使用lambda表达式将下边函数转变为匿名函数? def fun_A(x, y=): return x * y me:lambda x,y=3:x*y 1.请将下边的匿名函数转变为普通的屌丝函 ...

  3. 你知道C#中的Lambda表达式的演化过程吗?

    那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂. 委托的使用 例一: 什么是委托? 个人理解:用来传递方法的类型.(用来传递数字的类型有int.float ...

  4. Linq表达式、Lambda表达式你更喜欢哪个?

    什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相关的整条语句称作什么呢?在微软并没有给出官方的命名,在& ...

  5. 背后的故事之 - 快乐的Lambda表达式(一)

    快乐的Lambda表达式(二) 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能 ...

  6. Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)

    作者:Antonio Leiva 时间:Jan 5, 2017 原文链接:https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式 ...

  7. java8中lambda表达式的应用,以及一些泛型相关

    语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...

  8. 背后的故事之 - 快乐的Lambda表达式(二)

    快乐的Lambda表达式 上一篇 背后的故事之 - 快乐的Lambda表达式(一)我们由浅入深的分析了一下Lambda表达式.知道了它和委托以及普通方法的区别,并且通过测试对比他们之间的性能,然后我们 ...

  9. CRL快速开发框架系列教程二(基于Lambda表达式查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. php实用函数整理

    1. 排序:array_multisort 可以对多位数组的多个字段进行排序 例子1如下: //自定义数组排序--按转发数从高到低排序 function sortSelfRc($oneLayer){ ...

  2. php常用系统函数

    首先纯html页要用meta标签声明编码   <meta http-equiv="Content-Type" content="text/html; charset ...

  3. JAVA_FastJson

    package com.qf.mobiletrain01; import java.util.List; import com.alibaba.fastjson.JSON; class Student ...

  4. Android_sharePreference_ex1

    xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  5. typedef的使用3——使用经过typedef定义的函数构成的函数数组

    #include <stdio.h> #include <string.h>//不加还能跑,加上反而跑不了了...笑哭 #pragma warning(disable:4996 ...

  6. 关于JFace的自定义对话框(Dialog类)

    仅仅是使用MessageDialog,InputDialog等JFace中现成的对话框类是无法满足实际项目开发需要的. 很多时候都需要自己定制对话框,自定义对话框只要在Dialog类的基础上作扩展就行 ...

  7. js动态生成按钮,页面用DIV简单布局

    今天朋友让我忙帮给写个页面,由于时间紧破,所以没有完善,暂时先贴出来,以后有时间了在做修改 <!DOCTYPE html><html><head><title ...

  8. jQuery-对Select的操作

    语法解释: $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发 var checkTex ...

  9. JAXB - XML Schema Types, Defining Types for XML Elements Without Content

    Types for XML elements are constructed using xsd:complexType, even if they do not have content. The ...

  10. scala学习笔记:无参函数

    scala> def repeat(times:Int)(run:()=>Unit)=for(i<-1 to times)run() repeat: (times: Int)(run ...