Python的sum、map、filter和reduce

发布时间:2019-08-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Python的sum、map、filter和reduce脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

最近在看《Think Python》(英文版),看到了讲解map, reduce, filter等函数,觉得讲解的思路特别好。所以,我加上了自己的理解,写了本篇文章

引子

如果要对列表中的数字求和,我们可以这样做:

def add_all(t):
    """t is a list of nums"""
    total = 0
    for x in t:
        total += x

    return total

运行结果:

Python的sum、map、filter和reduce

由于@L_777_0@中求和操作太常见了,所以python提供了内置函数sum来进行这项操作

sum

将上一版代码修改如下:

if __name__ == '__main__':
    t = [1, 2, 3, 4]
    PRint sum(t)

运行结果:

Python的sum、map、filter和reduce

像这种从一个列表中得出一个结果的操作,也叫reduce,除了求和这一种reduce操作外,python还支持自定义的方式

reduce

比如,我不是想对队列求和,而是想得到列表各数字的乘积,可以利用reduce这样实现:

def multiple_all(x, y):
    return x * y

if __name__ == '__main__':
    t = [1, 2, 3, 4]
    print reduce(multiple_all, t)

运行结果:

Python的sum、map、filter和reduce

上面介绍了将一个从一个列表得到一个结果的情形,还有一种情形是:按照某个规律对列表中的元素一一转换,这就要用到map内置函数了

map

如果给定一个列表(元素为字符串),要把列表元素首字母大写,可以这样做

if __name__ == '__main__':
    t = ['hello', 'world', 'yarving']
    print map(lambda x: x.capITalize(), t)

运行结果:

Python的sum、map、filter和reduce

还有一种情况,是要将列表里的元素过滤出去,可以用到filter函数

filter

给定一个列表(元素为数字),如果要仅保留不大于4的数字,可以这样做:

if __name__ == '__main__':
    t = [1, 2, 3, 4, 5, 6, 7]
    print filter(lambda x: x <= 4, t)

运行结果:

Python的sum、map、filter和reduce

获取《Think Python》(英文版)子书

如想要获取《Think Python》(英文书)的PDF版本,可发送邮件到 yarving@QQ.COM ,并标明主题 "Think Python"

本文作者: Yarving Liu
本文链接: http://yarving.historytale.co...
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-sA 4.0 许可协议。转载请注明出处!

脚本宝典总结

以上是脚本宝典为你收集整理的Python的sum、map、filter和reduce全部内容,希望文章能够帮你解决Python的sum、map、filter和reduce所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。