首页 > 解决方案 > 如何在不使用内部元素的情况下将列表拆分为 x 个列表?

问题描述

处理一项作业,其中一个部分要求我将列表拆分为“x”个列表块,但我不一定想使用列表中的元素来这样做,因为我已经看到了很多这样做的例子. 例如,给定列表[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],我想将此列表分成 3 个偶数部分([[1,2,3,4,5],[6,7,8,9,10],[11,12,14,15]])

我在这里看到的大多数示例都倾向于将整个列表除以“x”,而不是将其分成“x”组,最终给我一个类似的列表[[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]]

编辑:

我已经想出了如何在我正在寻找的这个问题的第一部分中获得所需的输出,但是在进一步查看我的作业后,我意识到需要制作的列表必须以增量lst而不是放入一个值,该值将在该范围内生成一个列表。例如,如果我想打印一个分组列表,比如[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]我不想设置lstlst = list(range(1,lst+1)),然后当我为我的函数分配值时,我希望能够用 5 代替 15 来获得同样的结果。

def test(num, lst, start = 1):
    lst = list(range(start,lst+1))
    avg = len(lst) / float(num)
    out = []
    last = 0.0

    while last < len(lst):
        out.append(lst[int(last):int(last + avg)])
        last += avg

    return out

print (test(3,15))

标签: pythonchunking

解决方案


我在这里看到的大多数示例都倾向于将整个列表除以“x”,而不是将其分成“x”组,最终给我一个类似 [[1,2,3],[4,5 ,6],[7,8,9],[10,11,12],[13,14,15]]。

在您的示例中,分为 3 个块的 15 个元素的列表构成 5 个组。太糟糕了,你不想要五个组而不是三个,你已经完成了!

如果只有一种方法可以将 15 个元素与不同大小的块分开,这样你就有 3 个组 =)

暗示:

3 x 5 = 15
5 x 3 = 15

tl;dr:如果您认为将列表分成大小为“x”的块与创建“y”组不同,那么您应该花一点时间重新考虑。


推荐阅读