在python中内置了一种函数:map函数。
map函数接受两个参数(函数f,Iterator)返回值为另一个Iterator。
函数可以把参数Iterator中的每一个元素通过参数中的函数f进行计算,把返回值作为一个新的Iterator整体返回。
def f(x):
return x * x
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
map函数还可以很方便的转换类型:
n = map(int,'123143')
list(n)
[1, 2, 3, 1, 4, 3]
另一种reduce函数也接收两个参数(函数f,Iterator)。
其中函数f必须可以接收两个参数。运行时函数函数将按顺序计算Iterator两个元素,计算结果和下一个元素继续调用函数f。
def add(x,y):
return x+y
from functools import reduce
reduce(add,[1,2,3,4,5,6,7,8,9])
45
函数将list里的元素累加了起来。
函数filter同样接收两个参数(函数f,Iterator) 但是filter函数会筛选Iterator(删除某些元素)
def is_odd(n):
return n % 2 == 1
l = list(filter(is_odd, [1, 2, 3, 4, 5, 6, 10, 15]))
print(l)
[1, 3, 5, 15]
可以判断参数中 函数f 会返回ture或者false,依次计算Iterator如果结果为ture则保留,最后返回筛选后的Iterator。
sorted()函数接受参数形式为: Iterator,key=函数f
sorted()函数可以为Iterator排序。如果添加了参数: key = 函数f 则把Iterator中的元素按照经过函数f计算后的结果排序原Iterator。还可以添加reverse = True 降序 或者reverse = False 升序(默认)
其中key 和 reverse是选填。
a = [1, 34, 4, -3, 48, 10]
print(sorted(a)) #默认排序
[-3, 1, 4, 10, 34, 48]
print(sorted(a, key=abs)) #abs取绝对值后排序
[1, -3, 4, 10, 34, 48]
print(sorted(a, key=abs, reverse = True)) #倒序排序