我想用固定数字对相邻列表项进行分组。如
a = [1, 2, 3, 4, 5, 6]
groupby(a, 2)
的结果是[(1, 2), (3, 4), (5, 6)]
,
groupby(a, 3)
的结果是[(1, 2, 3), (4, 5, 6)]
这是我的解决方案
def groupby(a, l):
ret = []
for idx in range(len(a)/l):
ret.append(tuple(a[idx*l:(idx+1)*l:]))
return ret
是否有更有效的方式来实施它?
答案 0 :(得分:1)
>>> a = [1, 2, 3, 4, 5, 6]
>>> groupby = lambda l, n: [tuple(l[i:i+n]) for i in range(0, len(l), n)]
>>> groupby(a, 3)
[(1, 2, 3), (4, 5, 6)]
>>> groupby(a, 2)
[(1, 2), (3, 4), (5, 6)]
>>>
答案 1 :(得分:0)
是的,您想要使用zip
。
编辑:修复格式
具体来说,
def groupby(a, l):
ret = []
n = len(a) // l
it = len(a) // n
return list(zip(*(a[i * it:i * it + it] for i in range(n))))
答案 2 :(得分:0)