高阶函数在比较map/filter和generatorexpressions的时候,简单介绍下两者。具体内容在下面这篇文章:Python列表推导与生成器表达式这篇文章主要介绍三个高阶函数:map、filter和sorted。高阶函数定义为接受函数作为参数或返回函数作为结果的函数。mapmap(function,iterable,...)函数返回一个迭代器,该迭代器将函数应用于iterable中的每个项目并输出结果。参数:function:作用于序列每个元素的函数iterable:要处理的序列...:额外的可迭代参数map可以接受额外的可迭代参数,function必须接受相同数量的实际参数并从Itemsfetched中应用在所有迭代中并行。当有多个可迭代对象时,当最短的可迭代对象用完时,整个迭代结束。代码实现函数f(x)=x^2,例子如下:>>>deff(x):...returnx*x...>>>result=map(f,[1,2,3,4,5,6,7,8,9])>>>list(result)[1,4,9,16,25,36,49,64,81]这里传入的f是函数对象本身。map返回的结果是一个Iterator,Iteartor是一个lazysequence。整个序列由list()计算并返回一个列表。filterfilter(function,iterable)函数使用iterable中function函数返回的元素构造一个新的迭代器。参数:function:作用于iterable的函数iterable:可以是序列,支持迭代的容器,也可以是迭代器。filter函数,如果function为None,则假定它是恒等函数,即iterable中所有返回false的元素都会被移除。例如,要返回列表中的奇数:>>>defis_odd(num):...returnnum%2==1...>>>list(filter(is_odd,[1,2,3,4,5,6,7,8,9,10]))[1,3,5,7,9]看第一个参数为None的例子:>>>list(filter(None,['',0,1,2,3,4,5,6,7,8,9,10]))[1,2,3,4,5,6,7,8,9,10]当函数为无时,''和0不返回。由于Python在这里将0和空字符''视为False,因此将它们删除。题外话:由于列表推导和生成器表达式的引入,map和filter函数的使用频率也降低了。sortedsorted(iterable,*,key=None,reverse=False)函数,根据iterable中的项目返回一个新的排序列表。参数:iterable:可迭代对象key:指定一个带有单个参数的函数,用于从iterable中的每个元素中提取用于比较的键。默认为非反向:布尔值。如果设置为True,每个元素将以相反的顺序排序。其中key和reverse是可选参数,都必须指定为关键字参数。下面是sorted的简单用法:>>>lst=[4,2,5,3,1]>>>sorted(lst)[1,2,3,4,5]看字符串排序的例子:>>>s=['雷军','Allen','pony','jacky']>>>sorted(s)['Allen','雷军','jacky','pony']用于字符串排序,根据ASCII的大小比较,这里'L'<'j',所以L会排在j的前面。为了实现忽略大小写的排序,这里可以使用key函数将字符串映射为忽略大小写。例子,使用key排序:>>>sorted(s,key=str.lower)['Allen','jacky','雷军','pony']如果需要反向排序,直接传入参数reverse=True:>>>sorted(s,key=str.lower,reverse=True)['pony','雷军','jacky','Allen']这些是sorted()函数的一些用法。参考资料来源DavidM.Beazley;布赖恩·琼斯。PythonCookbook,第3版。奥莱利媒体。2013.卢西亚诺·拉马略。流利的Python。奥莱利媒体。2015"2.Built-inFunctions".docs.python.org.2020年1月18日检索廖雪峰。《Python教程》.liaoxuefeng.com。[2020-01-17]。以上是本文的主要内容。欢迎关注微信公众号《书集所录》
