Pythonlambda参数传递⽤法
之前提到过在List的sort⽅法中有个key参数,需要⽤到lambda表达式,所以在这⾥对lambda表达式进⾏⼀些介绍,如果有函数式语⾔编程经验这个就很好理解了。
lambda表达式是⼀个匿名函数,其实lambda我们可以认为就是个很简单的函数,连个函数名都没有。在可以不使⽤lambda的时候我不建议使⽤。
它的句法(形式):
lambda arguments : expression
以下是⼀个简单的例⼦,我们可以认为创建了⼀个名为fun的函数,它有⼀个参数a,它返回a+10的结果。这是最简单也是最⽆⽤的例⼦,但⽅便我们理解。
# 15
fun =lambda a : a +10
print(fun(5))
当然它同样⽀持多参数:
# 3
lambda编程fun =lambda a, b : a + b
print(fun(1,2))
它真正的⽤途是在另⼀个函数中作为参数传递:
⾃带函数的⽤法:filter, map, reduce 
fitre :根据条件筛选元素
map :所有元素进⾏相同操作
reduce :所有元素依次进⾏操作
import functools
#初始化⼀个0到9的列表
list_test =list(range(10))
#筛选对3取余等于0的数,结果[0, 3, 6, 9]
a =filter(lambda x: x %3==0, list_test)
#所有元素加10结果[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
b =map(lambda x: x +10, list_test)
#求和结果45
c = duce(lambda x, y: x + y, list_test)
print(list(a))
print(list(b))
print(c)
注意:
在python3中,filter和map⽅法不能在直接返回列表,它返回的是filter object和map object,需要⽤list()⽅法转换。
⽽reduce⽅法则直接从内置函数中删除,需要引⽤functools。
对于多条件排序的例⼦:
# 先根据第⼆个元素排序再根据第⼀个元素排序
# 返回结果[[4, 1], [1, 2], [2, 2], [3, 2], [1, 3], [3, 4]]
list_test =[[2,2],[3,4],[4,1],[1,3],[1,2],[3,2]]
list_test.sort(key =lambda x :(x[1],x[0]))
PS:如果这部分⽐较难以理解我们可以更换为以下⽅式进⾏多条件排序:
def second_first(ele):
return(elem[1],elem[0])
list_test =[[2,2],[3,4],[4,1],[1,3],[1,2],[3,2]]
list_test.sort(key=second_first)
结果相同。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。