python高阶函数
高阶函数
1.map()
用法:
list(map(fn, []))
说明:
map()传入的第一个参数是fn,即函数对象本身。
由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。
实例:
def f(x):
return x * x
r = map(f, [1, 3, 5])
list(r)
#[1, 9, 25]
2.reduce()
用法:
from functools import reduce
reduce(fn, [])
说明:
reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,
再把结果继续和序列的下一个元素做累积计算.
实例:
from functools import reduce
def fn(x, y):
return x * 10 + y
reduce(fn, [1, 3, 5, 7, 9])
#13579
3.filter()
用法:
list(fn, [])
说明:
和map()类似,filter()也接收一个函数和一个序列。
和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
实例:
def fn(n):
return n % 2 == 1
list(filter(fn, [1,2,3,4,5]))
# [1,3,5]
4.sorted()
用法:
sorted([])
说明:
Python内置的sorted()函数就可以对list进行排序;
此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序;
要进行反向排序可以传入第三个参数reverse=True。
实例:
sorted([1,3,2])
# [1,2,3]
sorted(['a','c','b'])
# ['a','b','c']
sorted(['a','c','B'], key=str.lower)
# ['a','B','c']
# 反序排列
sorted([1,3,2], reverse=True)
# [3,2,1]
--------------------------END---------------------------------------
上一篇: java的初学
下一篇: 翻硬币问题的自动机思想