map()函数的语法格式如下:
map(func, seq)
map()函数中有两个参数,第一个参数是函数func,第二个参数是序列seq。map()是一个映射函数,根据提供的函数对指定的序列做映射。map()函数是以序列seq中的每一项作为参数依次调用函数func,返回包含每次函数func返回值的map对象。
map()函数的第一个参数函数func可以是内建函数,也可以是自定义函数,甚至可以是匿名函数;第二个参数序列seq可以是列表、元组、字符串等。
例如,map()函数的第一个参数是内建函数,第二个参数是列表:
- >>> alist = [1, -2, -3]
- >>> print(list(map(abs, alist)))
- [1, 2, 3]
在上述程序中,abs是绝对值函数。由于map()函数的返回值是map对象,因此,使用list()方法将其转换成列表。
例如,map()函数的第一个参数是自定义函数,第二个参数是元组:
- >>> def f(x):
- ... return x ** 2
- ...
- >>> print(list(map(f, (2, 4, 7, 10))))
- [4, 16, 49, 100]
上述程序也可以改成匿名函数的形式:
- >>> print(list(map(lambda x: x ** 2, (2, 4, 7, 10))))
- [4, 16, 49, 100]
(4)filter()函数
filter()函数的语法格式如下:
filter(func, seq)
filter()是一个过滤器函数,用于过滤掉序列中不符合条件的项。filter()函数以序列seq中的每一项作为参数依次调用函数func进行判断,函数func返回True或False,将返回值为True的项放进filter对象中返回。
例如,过滤掉列表[7,10,13,16,17,19,21,22,26,28,29]中的奇数项,只输出偶数项:
- >>> def fun(x):
- ... if x % 2 == 0:
- ... return x
- ...
- >>> alist = [7, 10, 13, 16, 17, 19, 21, 22, 26, 28, 29]
- >>> print(list(filter(fun, alist)))
- [10, 16, 22, 26, 28]
(5)reduce()函数
reduce()函数的语法格式如下:
reduce(func, seq[, init])
其中,init是一个可选参数,表示初始值。注意,在使用reduce()函数前要导入from functools import reduce。
reduce()是一个累计函数,其实现原理:如果存在init参数,即有初始值,那么将初始值和序列seq的第1项作为参数传值给函数func进行运算,再将返回值与序列seq的第2项作为参数传值给函数func进行运算……这样依次将返回值与序列seq的下一项作为参数传值给函数func进行运算,直到序列最后一项运算完为止,返回最终的运算结果。如果不存在init参数,那么将序列seq的第1项和第2项作为参数传值给函数func进行运算,再将返回值与序列seq的第3项作为参数传值给函数func进行运算……这样依次将返回值与序列seq的下一项作为参数传值给函数func进行运算,直到序列最后一项运算完为止,返回最终的运算结果。
例如,初始值为100,对列表[1,2,3]使用reduce()函数进行累乘:
- >>> from functools import reduce
- >>> alist = [1, 2, 3]
- >>> def fun(x,y):
- ... return x * y
- ...
- >>> print(reduce(fun, alist, 100))
- 600
上述程序的功能等价于如下代码:
- >>> alist = [1,2,3]
- >>> num = 100
- >>> sum = alist[0] * num
- >>> for i in range(len(alist) -1):
- ... sum *= alist[i+1]
- ...
- >>> print(sum)
- 600
>>本文地址:https://www.ujiuye.com/zhuanye/2020/61386.html
声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。
1 您的年龄
2 您的学历
3 您更想做哪个方向的工作?