最近在看《Think Python》(英文版),看到了讲解map
, reduce
, filter
等函数,以为讲解的思路特别好。因此,我加上了本身的理解,写了本篇文章。python
若是要对列表中的数字求和,咱们能够这样作:api
def add_all(t): """t is a list of nums""" total = 0 for x in t: total += x return total
运行结果:函数
因为python中求和操做太常见了,因此python提供了内置函数sum
来进行这项操做spa
sum
将上一版代码修改以下:code
if __name__ == '__main__': t = [1, 2, 3, 4] print sum(t)
运行结果:blog
像这种从一个列表中得出一个结果的操做,也叫reduce,除了求和这一种reduce操做外,python还支持自定义的方式队列
reduce
好比,我不是想对队列求和,而是想获得列表各数字的乘积,能够利用reduce
这样实现:ip
def multiple_all(x, y): return x * y if __name__ == '__main__': t = [1, 2, 3, 4] print reduce(multiple_all, t)
运行结果:rem
上面介绍了将一个从一个列表获得一个结果的情形,还有一种情形是:按照某个规律对列表中的元素一一转换,这就要用到map
内置函数了字符串
map
若是给定一个列表(元素为字符串),要把列表元素首字母大写,能够这样作
if __name__ == '__main__': t = ['hello', 'world', 'yarving'] print map(lambda x: x.capitalize(), t)
运行结果:
还有一种状况,是要将列表里的元素过滤出去,能够用到filter
函数
filter
给定一个列表(元素为数字),若是要仅保留不大于4的数字,能够这样作:
if __name__ == '__main__': t = [1, 2, 3, 4, 5, 6, 7] print filter(lambda x: x <= 4, t)
运行结果:
如想要获取《Think Python》(英文书)的PDF版本,可发送邮件到 yarving@qq.com ,并标明主题 "Think Python"
本文做者: Yarving Liu
本文连接: http://yarving.historytale.co...版权声明: 本博客全部文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!