python高阶函数
map
map函数的作用是对于其迭代器中的每一个元素,拿出来,传入函数,得到的结果放到原来的位置。
最后返回一个修改后的新的迭代器
其并没有返回一个列表类型,而是返回了一个可以迭代的对象,其类型是map
不过我们可以将其转化为列表,不过奇怪的是我们遍历了一次之后,发现转化成的列表空了
传入多个参数
def expo(x,y):
return x**y
r=map(expo,range(5),range(5))
list(r)#1,1,4,27,256
reduce
格式:reduce(function,iterator)
function函数必须接受两个参数,把继续和的结果继续和序列的下一个元素进行计算
reduce(f,[𝒂𝟏, 𝒂𝟐, 𝒂𝟑, 𝒂𝟒])=f(f(f(𝒂𝟏, 𝒂𝟐), 𝒂𝟑), 𝒂𝟒))
from functools import reduce
def fact(x,y):
return x*y
r=reduce(fact,[1,2,3,4,5,6])
print(r)
#720
fliter
格式:fliter(function,sequence)
作用:过滤sequence,保留序列中使得function(item)=True的选项
返回fliter对象
def is_even(x):
if x%2==0:
return True
elif x%2==1:
return False
ls=list(filter(is_even,range(10)))
print(ls)
sorted
sorted内置函数
格式:
sorted(iterator,key,reverse=True)
将key定义的函数作用到iterator每个元素后,再进行排序
返回一个列表类型
sorted([1,2,39,8,46,12,56])
#[1, 2, 8, 12, 39, 46, 56]
自定义排序
sorted([1,2,-39,8,46,-12,56],key=abs)
[1, 2, 8, 12, 39, 46, 56]
倒序
sorted([1,2,3,4,5,6,7],reverse=True)
[7, 6, 5, 4, 3, 2, 1]