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)
请注意,这要求访问者中的元素数量是 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))