python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数:
map、yield、lambda、filter、reduce
有了它们,最大的好处是程序更简洁;没有它们,程序也可以用别的方式实现,只不过麻烦一些罢了。所以,还是能用则用之吧。更何况,恰当地使用这几个函数,能让别人感觉你更牛X。
1. map(function, sequence)
基本样式是:map(func,seq)
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
例子:
1.1 一般方法
使用map实现:
map实现
yield这个词在汉语中有“生产、出产”之意,在python中,它作为一个关键词(你在变量、函数、类的名称中就不能用这个了),是生成器的标志。含有yield关键词的函数返回值是一个生成器类型的对象,这个生成器对象就是迭代器。只要用了yield语句,那个普通函数就神奇般地成为了生成器,也就具备了迭代器的功能特性。
用上yield的斐波那契数列
lambda函数,是一个只用一行就能解决问题的函数
基本样式是:lambda arg1, arg2, ...argN : expression using arguments
lambda函数的使用方法:
在lambda后面直接跟变量
变量后面是冒号
冒号后面是表达式,表达式计算结果就是本函数的返回值
3.1 lambda这个函数替代add(x)
3.1 z的值
lambda求n的阶乘
filter(function, sequence)
filter的中文含义是“过滤器”,在python中,它就是起到了过滤器的作用,用于过滤序列。
和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
在一个list中,删掉偶数,只保留奇数
把一个序列中的空字符串删掉
5. reduce(function, sequence, starting_value)
对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用
reduce
6.sorted()
sorted()函数就可以对list进行排序
对list进行排序
sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
接收一个key函数来实现自定义的排序
给sorted传入key函数,即可实现忽略大小写的排序
反向排序,不必改动key函数,可以传入第三个参数reverse=True
联系客服