python list里前后数字相加比如说 [1,2,3],得到的列表是[1,3,6]?
题主这个问题对应的专业术语叫作“累加”,许多数据处理工具中都实现了这个函数,例如 Matlab、Excel、numpy、pandas 等,基本上与 求和、求平均数 这些函数处于同等的地位。
累加函数在各个工具中的名称一般是 cumsum
,是“累计”与“求和”两个单词的缩写。累加函数作用于数组或矩阵。
分别举一个 Matlab 和 numpy 中的用例:
Matlab:\u0026gt;\u0026gt; cumsum()ans = 1 3 6 10
Python numpy:\u0026gt;\u0026gt;\u0026gt; import numpy as np\u0026gt;\u0026gt;\u0026gt; np.cumsum()array(, dtype=int32)\u0026gt;\u0026gt;\u0026gt; np.cumsum().tolist()
【python list里前后数字相加比如说 [1,2,3],得到的列表是[1,3,6]?】 考虑到 numpy 安装起来比较费事,如果你想用原生的 Python 来实现这个函数,生成器应该是效率最高的方法了:\u0026gt;\u0026gt;\u0026gt; def cumsum(lst): s = 0 for a in lst: s += a yield s \u0026gt;\u0026gt;\u0026gt; cumsum() \u0026lt;generator object cumsum at 0x0DF4FFC0\u0026gt; \u0026gt;\u0026gt;\u0026gt; list(cumsum())
@偲念是壹種病 已经在前面提到了这种方法。
当然,如果你觉得yield
太难理解,自己写个 for
循环或者列表生成式也无可厚非,在轻量级的计算中,效率上的差别可忽略不计 ~
■网友
[reduce(lambda a,b: a+b, input for x in xrange(len(input)))
■网友
没看懂怎么生成的
推荐阅读
- 怎样成为一名合格的Python程序员?
- 环球车讯网|【帮你选车】简单粗暴 前后双电机+四驱 三款纯电SUV推荐
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 零基础入门学习啥语言好
- 趣头条|自主版玛莎拉蒂?风行全新SUV造型惊艳,前后独悬,搭三菱动力
- Python3.4和3.5区别大么
- python 中 def_():...... return _有啥作用
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 30岁男,创业失败转行学python,是否很晚?也不好找工作?