猿问

将列表分成较小的列表

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

上面的函数组(列表,大小),该函数组将一个列表分成多个给定大小的较小列表。


我需要这样的东西


输入:group([1、2、3、4、5、6、7、8、9],3)

输出:[[1、2、3],[4、5、6],[7、8 9]]


但是上面的代码的问题是索引显示超出范围。代码有什么问题?如何将元素追加到列表列表中?


UYOU
浏览 170回答 3
3回答

慕勒3428872

使用切片。>>> 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]]

慕容3067478

尝试: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这样的切片来说明。

波斯汪

大概的解决办法是这样的:]def group(l,size):&nbsp; &nbsp; length = len(l)&nbsp; &nbsp; newlist = []&nbsp; &nbsp; newgroup = []&nbsp; &nbsp; j = 0&nbsp; &nbsp; for i in range(0,length):&nbsp; &nbsp; &nbsp; &nbsp; if(j<size - 1):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newgroup.append(l[i])&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j = 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newgroup.append(l[i])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newlist.append(newgroup)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newgroup = []&nbsp; &nbsp; if(newgroup != []):&nbsp; &nbsp; &nbsp; &nbsp; newlist.append(newgroup)&nbsp; &nbsp; return newlistprint(group([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 3))结果:[[1、2、3],[4、5、6],[7、8、9],[10、11]]
随时随地看视频慕课网APP

相关分类

Python
我要回答