lambda()函数
lambda 函数完整详解 & 高级用法
语法:
lambda [arg1 [,arg2,.....argn]]:expression #[arg…] 是参数列表,expression 是一个参数表达式
特性:
#匿名
#输入为参数,输出为expression计算结果
#拥有自己的命名空间,不能访问参数列表之外或全局命名空间的参数
lambda常见用法:
1、将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数
add = lambda x, y: x+y
add(1, 2) #结果为3
2、将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换
time.sleep=lambda x: None # 这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。
time.sleep(3)
lambda高级用法:
将lambda函数作为参数传递给其他函数
1、map()函数 :根据提供的函数对指定序列做映射
'''
语法:
map(function, iterable, ...)
返回:
python 2.x 返回列表
Python 3.x 返回迭代器
'''
map(lambda x: x ** 2, [1, 2, 3, 4, 5])
# 结果:[1, 4, 9, 16, 25]
2、reduce() 函数:对参数序列中元素进行累积
'''
语法:
reduce(function, iterable[, initializer])
参数:
function ----> 函数,有两个参数
iterable ----> 可迭代对象
initializer ----> 可选,初始参数
返回值:
返回函数计算结果。
'''
def add(x, y):
return x + y
reduce(add, [1, 3, 5, 7, 9]) # 计算列表元素和:1+3+5+7+9
# 结果:25
3、sorted() 函数:对所有可迭代的对象进行排序操作
'''
sort与sorted区别:
1、sort 是 list 的一个方法,而 sorted 可以对所有可迭代的对象进行排序操作。
2、list 的 sort 方法返回的是原列表排序后的列表,无返回值;而内建函数 sorted 方法返回的是一个新的 list
语法:
sorted(iterable[, cmp[, key[, reverse]]])
参数说明:
iterable 可迭代对象。
cmp 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于返回1,小于返回-1,等于返回0。
key 迭代对象中的排序元素
reverse 排序规则,reverse = True 降序 , reverse = False 升序(默认)
'''
# ===========匿名函数用法:===========
L=[('b',2),('a',1),('c',3),('d',4)]
# 1、利用参数 cmp 排序
sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
# 结果:
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# 2、利用参数 key 排序
sorted(L, key=lambda x:x[1])
# 结果:
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
4、filter()函数:用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
'''
语法:
filter(function, iterable)
参数:
function 判断函数
iterable 可迭代对象
返回值:
Pyhton2.7 返回列表,Python3.x 返回迭代器对象,具体内容可以查看:Python3 filter()函数
'''
newlist = filter(lambda x: x % 3 == 0, [1, 2, 3])
print(list(newlist))
# 结果: [3]
小小测试一枚