2012-08-22 47 views

回答

0

,我可以找到最好的解決方案(需要itertools):

groupby = lambda s,n : izip(*[iter(s)]*n) 

但感覺略微哈克,是很難讀

+0

對於不是塊大小倍數的輸入,通常不能解決問題。 izip基本上忽略了最後一個,而不是完整的項目塊。 – yacc143

2

itertools模塊裏呼籲grouper這個配方。這裏是從itertools文檔直接複製的摘錄。

def grouper(n, iterable, fillvalue=None): 
    "Collect data into fixed-length chunks or blocks" 
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx 
    args = [iter(iterable)] * n 
    return izip_longest(fillvalue=fillvalue, *args) 
+0

想起它,它與@ user792036提供的解決方案完全相似 –

+0

實際上,它涵蓋了一個填充值,並且在使用時看起來更好,因爲它是一個函數。 – jamylak

相關問題