欢迎来到田晓东的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

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]

posted on 2022-02-17 16:29  匍匐的仰望者  阅读(199)  评论(0编辑  收藏  举报

导航