filter,map,reduce,zip,enumerate这些函数在Python中称为高阶函数。本文主要学习它们的用法。filterfilter函数原型如下:filter(functionorNone,iterable)-->filterobject第一个参数是一个判断函数(返回结果需要为True或False),第二个是一个序列,这个函数函数会依次对可迭代序列执行(item)操作,返回的结果是经过过滤的结果序列。简单记忆:过滤序列中的元素,得到符合条件的序列。my_list=[1,2,3]my_new_list=filter(lambdax:x>2,my_list)print(my_new_list)返回结果:,使用list函数输入序列内容。mapmap函数的原型如下:map(func,*iterables)-->mapobject函数运行后生成一个列表,第一个参数是一个函数,第二个参数是一个或多个序列;下面的代码是一个简单的测试用例:my_list=[-1,2,-3]my_new_list=map(abs,my_list)print(my_new_list)以上代码运行后的结果是:。使用print(list(my_new_list))得到结果。map函数的第一个参数可以有多个参数。发生这种情况时,后面的第二个参数需要是多个序列。deffun(x,y):returnx+y#fun函数有2个参数,所以需要两个序列my_new_list=map(fun,[1,2,3],[4,4,4])print(my_new_list)print(list(my_new_list))map函数解决的问题:使用map函数,不需要创建空列表;调用函数时,无需使用括号,map函数会自动调用目标函数;map函数会自动匹配sequence中的所有元素。reduce函数的原型如下:reduce(function,sequence[,initial])->value第一个参数是一个函数,第二个参数是一个序列,返回计算结果后的值。该函数的价值在于滚动计算应用于列表中的连续值。测试代码如下:fromfunctoolsimportreducemy_list=[1,2,3]defadd(x,y):returnx+ymy_new_list=reduce(add,my_list)print(my_list)print(my_new_list)最终结果为6、如果将第三个参数设置为4,可以运行代码查看结果。最后的结论是,第三个参数代表初始值,即累加操作的初始值。my_new_list=reduce(add,my_list,4)print(my_list)print(my_new_list)简单记忆:累加序列中的所有元素。zipzip函数的原型如下:zip(iter1[,iter2[...]])-->zipobjectzip函数以一个可迭代对象为参数,将对象中对应的元素打包成元组,并然后返回A组列表。如果每个迭代器的元素个数不同,则返回列表的长度与最短对象的长度相同。使用星号(*)运算符,可以将元组解压缩到列表中。测试代码如下:my_list1=[1,2,3]my_list2=["a","b","c"]print(zip(my_list1,my_list2))print(list(zip(my_list1,my_list2)))显示如何使用*运算符:my_list=[(1,'a'),(2,'b'),(3,'c')]print(zip(*my_list))print(list(zip(*my_list)))输出如下:[(1,2,3),('a','b','c')]简单记忆:zip的作用是映射多个容器的相似索引,可以方便的用来构造字典。enumerateenumerate函数原型如下:enumerate(iterable,start=0)参数说明:sequence:序列、迭代器或其他支持迭代的对象;start:下标的起始位置。该函数用于将一个可遍历的数据对象组合成一个索引序列,同时列出数据和数据下标,一般用在for循环中。测试代码如下:weekdays=['Mon','Tus','Wen','Thir']print(enumerate(weekdays))print(list(enumerate(weekdays)))返回结果为:。本篇博客小结本文涉及的函数可以结合lambda表达式使用,可以大大提高编码效率。最好的学习资料永远是官方手册