标签:元素 tin 函数 支持 false als 自动 执行 需求
lambda(lambda 参数:函数体)表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
lambda就是用来定义一个匿名函数的,如下所示:
add = lambda x, y : x+y
add(1,2) # 结果为3
Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:
map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:
>>> def cube(x):
return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
>>> def add(x,y):
return x + y
>>> reduce(add, range(1, 11))
55 (注:1+2+3+4+5+6+7+8+9+10)
>>> reduce(add, range(1, 11), 20)
75 (注:1+2+3+4+5+6+7+8+9+10+20)
filter(f,list):接收一个函数 f 和一个list,这个函数 f 的作用是对list每个元素进行判断,即f是判断方法,list是判断对象。filter()自动过滤掉非true的元素,返回由符合条件元素组成的新list。例如:
>>> list(filter(None,[1,0,True,False]))
[1, True]
>>> list(filter(lambda x:x*2,range(10)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(filter(lambda x:x%2,range(10)))
[1, 3, 5, 7, 9]
>>> list(filter(lambda x:x+2,range(10)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(filter(lambda x:x-2,range(10)))
[0, 1, 3, 4, 5, 6, 7, 8, 9]
sorted
# 需求:将列表中的元素按照绝对值大小进行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))
当然,也可以如下:
list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):
return abs(x)
sorted(list1,key=get_abs)
标签:元素 tin 函数 支持 false als 自动 执行 需求
原文地址:https://www.cnblogs.com/zf612326/p/9267395.html