资讯专栏INFORMATION COLUMN

Python的sum、map、filter和reduce

fasss / 2270人阅读

摘要:最近在看英文版,看到了讲解等函数,觉得讲解的思路特别好。所以,我加上了自己的理解,写了本篇文章。

最近在看《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中求和操作太常见了,所以python提供了内置函数sum来进行这项操作

sum

将上一版代码修改如下:

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

运行结果:

像这种从一个列表中得出一个结果的操作,也叫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)

运行结果:

上面介绍了将一个从一个列表得到一个结果的情形,还有一种情形是:按照某个规律对列表中的元素一一转换,这就要用到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》(英文版)电子书

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41901.html

相关文章

  • Python进阶笔记

    摘要:用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。和不同的是,把传入的函数依次作用于每个元素,然后根据返回值是还是决定保留还是丢弃该元素。字符串给出当前平台使用的行终止符。程序中间的退出,为正常退出。 列表生成式 函数的参数类型 lambda函数 map, reduce, filter, sorted函数 eval, exec, join, zip函数 itertools中的...

    ygyooo 评论0 收藏0
  • Python map, reduce, filtersorted

    摘要:的函数使得函数能直接以的每个元素作为参数传递到中并返回响应的新的如下求的平方在需要对中的每个元素做转换的时候会很方便比如把中的每个转换成当然第二个参数是也可以是或者是类结构的是不行的不过返回的结果都是这里顺便说一下的结构是用表示的如是直观的 map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中...

    jlanglang 评论0 收藏0
  • [零基础学python]大话题小函数(2)

    摘要:上一讲和本讲的标题是大话题小函数,所谓大话题,就是这些函数如果溯源,都会找到听起来更高大上的东西。是提出的一个软件架构,用于大规模数据集大于的并行运算。 上一讲和本讲的标题是大话题小函数,所谓大话题,就是这些函数如果溯源,都会找到听起来更高大上的东西。这种思维方式绝对我坚定地继承了中华民族的优良传统的。自从天朝的臣民看到英国人开始踢足球,一直到现在所谓某国勃起了,都一直在试图论证足球起...

    leejan97 评论0 收藏0
  • Python 进阶之路 (六) 九浅一深 lambda,陈独秀你给我坐下!

    摘要:好啦,首先让我们先搞明白基础定义,到底是什么表达了中用于创建匿名函数的特殊语法。其实总结起来,可以理解为一个小的匿名函数,函数可以使用任意数量的参数,但只能有一个表达式。 lambda是什么 大家好,今天给大家带来的是有关于Python里面的lambda表达式详细解析。lambda在Python里面的用处很广,但说实话,我个人认为有关于lambda的讨论不是如何使用的问题,而是该不该用...

    WelliJhon 评论0 收藏0
  • Python 进阶之路 (五) map, filter, reduce, zip 一网打尽

    摘要:另外,这些中的每一个都是纯函数,有返回值。例如,如果要计算整数列表的累积乘,或者求和等等基础语法参数是连续作用于每一个元素的方法,新的参数为上一次执行的结果,为被过滤的可迭代序列返回值最终的返回结果在中,是一个内置函数。 简洁的内置函数 大家好,我又回来了,今天我想和大家分享的是Python非常重要的几个内置函数:map,filter,reduce, zip。它们都是处理序列的便捷函数...

    ccj659 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<