“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那么多讨厌的特性)
那么我们lamb
da的说明
lambda arg1,arg2,...,argN:expression using arguments
在python的lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
比如上文中的多逻辑 return A if TRUE else return B
其实就是一个语法糖,不过听说C++11也支持lambda且更加强大 下次再看C++的吧