list - 在python中查找列表子集的总和

标签 list python chunks

这可能非常简单,但我忽略了一些东西......

我有一长串整数,在本例中代表网站的每日访问者。我想要一个新的每周 访问者列表。所以我需要从原始列表中获取七人一组,对它们求和,然后将它们添加到新列表中。

我的解决方案看起来很蛮力,不够优雅:

numweeks = len(daily) / 7
weekly = []
for x in range(numweeks):
    y = x*7
    weekly.append(sum(visitors[y:y+7]))

是否有更高效或更 Pythonic 的方式来做到这一点?

最佳答案

weekly = [ sum(visitors[x:x+7]) for x in range(0, len(daily), 7)]

或密度稍低:

weekly = []
for x in range(0, len(daily), 7):
     weekly.append( sum(visitors[x:x+7]) )

或者,使用 numpy 模块。

by_week = numpy.reshape(visitors, (7, -1))
weekly = numpy.sum( by_week, axis = 1)

注意,这需要visitor中的元素个数是7的倍数,还需要安装numpy。然而,它可能也比其他方法更有效。

或者对于 itertools 代码奖励:

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return itertools.izip_longest(fillvalue=fillvalue, *args)

weekly = map(sum, grouper(7, visitors, 0))

关于list - 在python中查找列表子集的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133434/

相关文章:

python 元组和列表。拒绝转换的元组

python 列表数学索引变量

python - 如何将字符串文件导入列表列表?

python - 如何将列表拆分为大小相等的 block ?

r - 一个数据集拆分成多个数据集后如何计算?

java - 比较数字字符串 - 先转换它们还是比较而不转换?

python - Django 管理员 CIDR 类型

Python:使用 Pony ORM 进行简单排序

带有硬制表符的 Spacemacs 中的 Python 缩进已关闭

javascript - 使用 JavaScript 按数字或字母字符将字符串拆分为 block