为了账号安全,请及时绑定邮箱和手机立即绑定

将列表分成较小的列表

将列表分成较小的列表

UYOU 2021-03-28 16:15:48
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]]但是上面的代码的问题是索引显示超出范围。代码有什么问题?如何将元素追加到列表列表中?
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超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]]


查看完整回答
反对 回复 2021-04-06
?
慕容3067478

TA贡献1773条经验 获得超3个赞

尝试:


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


查看完整回答
反对 回复 2021-04-06
?
波斯汪

TA贡献1811条经验 获得超4个赞

大概的解决办法是这样的:]


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]]


查看完整回答
反对 回复 2021-04-06
  • 3 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信