赞
踩
目录
3. 与map(function, iterable)函数结合
4.与filter(function, iterable) 函数结合
5.与 reduce(function, iterable) 函数结合
简介:匿名函数是以关键字 lambda,后面是一系列的参数,然后用冒号隔开,最后则是由这些参数组成的表达式。运用匿名函数,能让我们的代码更简洁、易读;通常的使用场景是:程序中需要使用一个函数完成一个简单的功能,并且该函数只调用一次
匿名函数的格式:
lambda argument1, argument2,... argumentN : expression
- square = lambda x: x**2
- square(3)
- >> 9
1).lambda 可以用在一些常规函数 def 不能用的地方,比如,lambda 可以用在列表内部,而常规函数却不能
-
- l = [(lambda x: x*x)(x) for x in range(10)]
- print(l)
- >> [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2).lambda 可以被用作某些函数的参数,而常规函数 def 也不能
-
- l = [(1, 20), (3, 0), (9, 10), (2, -1)]
- l.sort(key=lambda x: x[1]) # 按列表中元组的第二个元素排序
- print(l)
-
- >> [(2, -1), (3, 0), (9, 10), (1, 20)]
3).lambda 的主体是只有一行的简单表达式,并不能扩展成一个多行的代码块
lambda 专注于简单的任务,而常规函数则负责更复杂的多行逻辑
函数 的第一个参数是函数对象,第二个参数是一个可以遍历的集合,它表示对 iterable 的每一个元素,都运用 function 这个函数,返回一个迭代器
- squared = map(lambda x: x**2, [1, 2, 3, 4, 5])
- print(squared) # 返回一个 map类的迭代器
- print(list(squared)) # 转成列表
-
- >> <map object at 0x000002652C153100>
- >> [1, 4, 9, 16, 25]
表示对 iterable 中的每个元素,都使用 function 判断,并返回 True 或者 False,最后将返回 True 的元素组成一个新的可迭代的对象
- l = [1, 2, 3, 4, 5]
- new_list = filter(lambda x: x % 2 == 0, l)
- print(new_list)
- print(list(new_list))
-
- >> <filter object at 0x00000161F4833100>
- >> [2, 4]
表示对 iterable 中的每个元素以及上一次调用后的结果,运用 function 进行计算,所以最后返回的是一个单独的数值
- from functools import reduce
-
- l = [1, 2, 3, 4, 5]
- result = reduce(lambda x, y: x * y, l)
- print(result)
-
- >> 120
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。