def group(l,size):
length = len(l)
new = []
for i in range(0,length):
for j in range(i,size):
new[i].append(l[j])
print new
上面的函数组(列表,大小),它取一个列表并拆分成给定大小的较小列表。
我需要这样的东西
输入:组([1,2,3,4,5,6,7,8,9],3)
输出:[[1,2,3],[4,5,6],[7,8,9]]
但是上面代码的问题是显示索引超出范围。代码中有什么问题? 如何将元素追加到列表列表中?
答案 0 :(得分:6)
使用切片。
>>> def group(l, size):
... return [l[i:i+size] for i in range(0, len(l), size)]
...
>>> group([1, 2, 3, 4, 5, 6, 7, 8, 9], 3)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
答案 1 :(得分:0)
尝试:
def group(l,size):
length = len(l)
new = []
for i in range(0, length/size):
new.append([])
for i in range(0,len(new)):
for j in range(i*size,(i*size)+size):
new[i].append(l[i+j])
print new
编辑: 不,不要这样做。使用像falsetru illustrates这样的切片。
答案 2 :(得分:-1)
粗略的解决方案是:]
def group(l,size):
length = len(l)
newlist = []
newgroup = []
j = 0
for i in range(0,length):
if(j<size - 1):
j += 1
newgroup.append(l[i])
else:
j = 0
newgroup.append(l[i])
newlist.append(newgroup)
newgroup = []
if(newgroup != []):
newlist.append(newgroup)
return newlist
print(group([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 3))
结果:[[1,2,3],[4,5,6],[7,8,9],[10,11]]