zoukankan      html  css  js  c++  java
  • lambda表达式

    转载自:https://www.zhihu.com/question/20125256
    原作者:路人甲
     
    我特别喜欢吃核桃,以前我吃核桃的时候我都是这样吃的:一个一个用手剥了吃。
    walnut_list = [1,2,3]#我有三个核桃,核桃1、2、3
    
    def eat_walnut_use_hands(num):#用手剥核桃吃核桃
        'Eat {} walnut.'.format(num)
    
    for x in walnut_list:
        eat_walnut_use_hands(x)
    

    后来有一天,我朋友跟我说,有一个剥核桃的工具,只要一拉一弹就可以把核桃壳打碎了,哪用手剥多累多复杂啊,现在我吃核桃都是用这个工具吃的。

    现在肯定有人要问我这个工具叫什么名字。
    但是问题来了,我的那位朋友没有告诉我这个工具叫什么,而且我也很讨厌去给她起个名字,起名字这事情太麻烦了,于是我只能告诉你,我是这样吃的了。
    walnut_list = [1,2,3]#我有三个核桃,核桃1、2、3
    map(lambda num:'Eat {} walnut.'.format(num),walnut_list)
    

    学会了吃核桃了?那现在坐下来,我们好好谈谈这个Lambda
    Lambda就是一个匿名函数,有时候,要实现某个很简单函数,而且我们只会需要调用它一次,我们不愿意花时间去给给它取个名字,因为起名字是非常让人恼火的。这时候lambda就派上了用场。

    比如要实现一个函数,该函数返回一个数的平方。
    def f(x):
        return x*x
    
    如果你使用lambda表达式的话
    lambda x:x*x
    

    再比如要实现一个函数,这个函数可以求一个整数list中的所有元素的绝对值。
    from functools import reduce
    l = [1,2,3,5,-9,0,45,-99]
    map(lambda x:abs(x),l)
    

    再比如要取出一个整数list中所有为负数的元素
    l = [1,2,3,5,-9,0,45,-99]
    filter(lambda x:x < 0,l)
    

    再比如要实现一个函数,这个函数可以求一个list中所有元素的和。
    from functools import reduce
    l = [1,2,3,5,-9,0,45,-99]
    reduce(lambda x,y:x+y,l)
    

    最后你的老师给了你一道题目,希望你可以在终端打印出九九乘法表,于是你邻座的同学很快写出了一个代码出来。
    for x in range(1,10):
        for y in range(x,10):
            print('{}*{}= {} '.format(x,y,x*y),end='')
        print('')
    

    当然你不甘示弱,你用lambda写出了一段代码?
  • 相关阅读:
    IOS遍历未知对象属性、函数
    [Unity3D]Unity3D游戏开发之Logo渐入渐出效果的实现
    面向画布(Canvas)的JavaScript库
    将canvas画布内容转化为图片(toDataURL(),创建url)
    canvas上的像素操作(图像复制,细调)
    【bzoj1251】序列终结者(伸展树)
    延时标记
    曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|.
    曼哈顿距离最小生成树与莫队算法(总结)
    莫队算法(区间处理)
  • 原文地址:https://www.cnblogs.com/chichung/p/9479126.html
Copyright © 2011-2022 走看看