滚雪球学 Python 之内置函数:filter、map、reduce、zip、enumerate
橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起
Be More Pythonic
。
已完成的文章清单
六、filter、map、reduce、zip、enumerate
这几个函数在 Python 里面被称为高阶函数,本文主要学习它们的用法。
6.1 filter
filter 函数原型如下:
第一个参数是判断函数(返回结果需要是 True 或者 False),第二个为序列,该函数将对 iterable
序列依次执行 function(item)
操作,返回结果是过滤之后结果组成的序列。
简单记忆:对序列中的元素进行筛选,获取符合条件的序列。
返回结果为:<filter object at 0x0000000001DC4F98>
,使用 list
函数可以输入序列内容。
6.2 map
map 函数原型如下:
该函数运行之后生成一个 list,第一个参数是函数、第二个参数是一个或多个序列;
下述代码是一个简单的测试案例:
上述代码运行完毕,得到的结果是:<map object at 0x0000000002860390>
。使用 print(list(my_new_list))
可以得到结果。
map
函数的第一个参数,可以有多个参数,当这种情况出现后,后面的第二个参数需要是多个序列。
map 函数解决的问题:
使用
map
函数,不需要创建一个空列表;调用函数的时候,不需要带括号了,
map
函数会自动调用目标函数;map
函数会自动匹配序列中的所有元素。
6.3 reduce
reduce 函数原型如下:
第一个参数是函数,第二个参数是序列,返回计算结果之后的值。该函数价值在于滚动计算应用于列表中的连续值。
测试代码如下:
最终的结果是 6,如果设置第三个参数为 4,可以运行代码查看结果,最后得到的结论是,第三个参数表示初始值,即累加操作初始的数值。
简单记忆:对序列内所有元素进行累计操作。
6.4 zip
zip 函数原型如下:
zip
函数将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一样,则返回列表长度与最短的对象相同,利用星号(*
)操作符,可以将元组解压为列表。
测试代码如下:
输出结果如下:
简单记忆:zip 的功能是映射多个容器的相似索引,可以方便用于来构造字典。
6.5 enumerate
enumerate 函数原型如下:
参数说明:
sequence
:一个序列、迭代器或其他支持迭代对象;start
:下标起始位置。
该函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,一般用在 for
循环当中。
测试代码如下:
返回结果为:<enumerate object at 0x0000000002803AB0>
。
6.6 这篇博客的总结
本文涉及的函数可以与 lambda 表达式进行结合,能大幅度提高编码效率。最好的学习资料永远是 官方手册
相关阅读
博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/27b785686ffc7508456e6de7f】。文章转载请联系作者。
评论