Python:内置高阶函数

2020-02-22  本文已影响0人  学习python中

高阶函数:

变量可以指向函数,函数参数可以传变量,所以一个函数可以调用另一个函数作为参数,这种函数称之为高阶函数


sorted

见 sort 与 sorted一文:https://www.jianshu.com/writer#/notebooks/14787822/notes/60918094


map

map接收两个参数,一个函数,一个可迭代对象,并把函数作用于可迭代对象的每一个元素,并把结果作为新的迭代器返回(python2.x 返回列表,python3.x返回迭代器)

举例1:将列表的每个元素求平方

li = [1,2,3,4,5,6,7,8]

li_res =map(lambda x:x*x,li)

print(list(li_res))

输出:[1, 4, 9, 16, 25, 36, 49, 64]

举例2:将列表的每个数字转化为字符串

int_list = [1,2,3,4,5,6,7,8]

str_list =map(str,int_list)

print(list(str_list))

输出:['1', '2', '3', '4', '5', '6', '7', '8']


reduce

在python3中,reduce已经不算高阶函数,被放在functools包中:from functools import reduce

作用是:将一个函数作用于一个序列上,这个函数必须接收两个参数,reduce将结果继续和下一个元素做计算,返回的是一个value

举例1:对一个序列求和

from functoolsimport reduce

li = [1,2,3,4,5,6]

li_res = reduce(lambda x,y:x+y,li)

print(li_res)

输出:21

举例2:将一个序列转化为一个整数

from functoolsimport reduce

li = [1,2,3,4,5]

li_res = reduce(lambda x,y:str(x)+str(y),li)

print(int(li_res))

或者

from functoolsimport reduce

li = [1,2,3,4,5]

def f(x,y):

return 10*x+y

li_res = reduce(f,li)

print(li_res)

输出都是12345


filter

与map类似,接收一个函数和一个可迭代对象,不同的是filter将函数作用于每个item,根据返回的结果是True还是False决定是否保留还是丢弃

举例1:删除偶数,保留奇数

li = [1,2,3,4,5,6]

li_res =filter(lambda x:x%2==0, li)

print(list(li_res))

输出[1, 3, 5]

上一篇 下一篇

猜你喜欢

热点阅读