python自学首页投稿(暂停使用,暂停投稿)

Python3.+匿名函数

2017-10-24  本文已影响35人  __Y_Q

1.匿名函数

Python中使用 lambda 表达式来创建匿名函数

1.1关于 lambda表达式的说明

1.2关于 lambda表达式的语法

 使用 lambda 关键字 后面是参数列表 :表达式  
 lambda 默认是有返回值的 
 如下:
 lambda 参数列表 : 表达式  默认 return

1.3 例子:

lambda a,b : a + b 

这就是个简单的 lambda 表达式 传入参数 a,b, 然后进行运算,返回 a + b 的值

num  = lambda a,b : a + b
print(num(1,2))  #结果输出3

有点基础的应该都会明白是什么意思

再来深入一点,分析下面的代码

 def operation(a,b,opt):  #把 lambda 当参数传入
     result = opt(a,b)
     return  result

 result = operation(10,10,lambda a,b : a + b)
 print(result)

这里有一个自定义函数,operation,接收3个参数, a,b,opt,然后看调用的地方传入的值,10 对应 a ,后面的10对应 b ,最后是一个 lambda 表达式,对应最后的 opt,这里是把 lambda 当成了一个参数传入了自定义的operation函数内,在operation 里面把接收到的两个10,再传入 opt 也就是 lambda中 最后返回运算出来的结果

下面来个进阶

students = [
    {'name':'zhangsan','age':17},
    {'name':'lisi','age':19},
    {'name':'wanger','age':15}
]

有这样一个列表,列表中的每个元素是一个字典,我想对 age 进行排序,然后输出,如果单独写一个函数的话其实也是能实现的,不过用 lambda 的话就会更简洁与方便

students.sort(key = lambda x : x['age'])
print(students)

输出结果

[{'name': 'wanger', 'age': 15}, {'name': 'zhangsan', 'age': 17}, {'name': 'lisi', 'age': 19}]

关于'key'
从python2.4开始,list.sort()和sorted()函数增加了key参数来指定一个函数,此函数将在每个元素比较前被调用

key参数的值为一个函数,此函数只有x一个参数,且返回age的值用来进行比较

也就是说在 sort的时候,第一次获取第一个元素,然后当做参数传入到 key 指定的函数里, 在key 指定的函数里,获取第一个元素里面的 age的值,并返回, 然后,再获取第二个元素,第三个元素,.....全部获取完之后,再进行排序,

是不是有点晕,一开始我也很晕,慢慢试着理解一下.就会容易接受了
可能我的理解也有不对的地方,若有大神看到请及时指点小弟,免得一直走歪路

上一篇 下一篇

猜你喜欢

热点阅读