在Python中高效地分组相邻的列表项
我想用固定的数字对相邻的列表项进行分组。比如在Python中高效地分组相邻的列表项,python,list,Python,List,我想用固定的数字对相邻的列表项进行分组。比如 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 有没有
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
有没有更有效的方法来实现它?是的,您需要使用
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))))
我们可以使用
itertools.izip\u longest
请查看以下链接:
是否保证输入列表的长度可以被分组号整除?也就是说,如果列表的长度是7,会发生什么?@SethMMorton,将所有剩余部分作为最后一组
>>> 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)]
>>>