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))
其實,這是一個很好的codereview.stackexchange.com是sp。的問題特別是爲了改進代碼,使其更快/更優雅。 – 2011-05-26 03:47:47
謝謝......不知道那個stackexchange網站。很難知道哪一個問題適合哪個問題,尤其是因爲現在有這麼多。另外,這個似乎有所有的眼球,所以我總是覺得原來是最好的。 :) – fitzgeraldsteele 2011-05-26 03:52:15
這段代碼沒有錯 - 它很直接,並且很好地傳達了它的意圖。我只是將var名稱更改爲比'x'和'y'更具描述性的內容,但除此之外,這比任何基於理解的破解更有優勢 – 2011-05-26 03:52:23