关于lambda引出的碎碎念

第一次接触lambda表达式是在学习python的书上

“lambda表达式是一个匿名函数” -----某本不愿意透漏姓名的书如是说

我看到这话的第一个反应是:Y有病吧,函数不就是堂堂正正的写出来好减少代码的重复度的吧!

你Y匿名是什么意思啊?要干坏事吗?将来出来差错道理要找谁负责啊!遂快速翻过了此节

---------------------几个月过去了-------------------

在论坛上看到了这样的一个求助

{

    对嵌套列表里面的小列表们按照自定义的条件进行排序,

    list = [[1], [1,2,3,4,5,6,7], [1,2,3], [1,2], [1,2,3,4], [1,2,3,4,5,6,7,8]]
    方程1: (列表长度) / 10

    方程2: (列表长度) / 12

     list里的前三个小列表通过方程1, 后三个小列表通过方程2来加以限制,再一起来排序想得到排序的结果:
    list = [[1],[1,2],[1,2,3],[1,2,3,4],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7]]

}

正当我想操起键盘大打出手的时候发现了如下的回答

list = [[1], [1,2,3,4,5,6,7], [1,2,3], [1,2], [1,2,3,4], [1,2,3,4,5,6,7,8]]

l=map(lambda x:{list.index(x):float(len(x))/10} if list.index(x)<3 else {list.index(x):float(len(x))/12},list)

a = []
for i in sorted(l,key=lambda x:x.values()):
        a.append(list[sum(i.keys(),0)])

print a

恩............

这啥啊????????

----------------下面是正经的学习时间---------------------------

先看map,在python2。7中help(map)的结果

  map(function, sequence[, sequence, ...]) -> list

https://my.oschina.net/zyzzy/blog/115096 这里讲的比较详细

简而言之 map(function, seq1,seq2,...,seqn) = [function(arg1,arg2,...,argn) for arg1,arg2,...,argn in zip(seq1,seq2,...,seqn)]

那么我们知道了I把list和lambda x匿名函数对在了一起

恩 所以说lambda其实就是大牛们用的即抛型函数了(就像上古版本的define一样 不过因为是真正的函数所以没有的define那么多讨厌的特性)

那么我们lambda的说明

lambda arg1,arg2,...,argN:expression using arguments

在python的lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

比如上文中的多逻辑 return A if TRUE else return B

其实就是一个语法糖,不过听说C++11也支持lambda且更加强大  下次再看C++的吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值