【问题标题】:how do you split list into x lists without using the elements on the inside?如何在不使用内部元素的情况下将列表拆分为 x 个列表?
【发布时间】:2020-03-21 04:22:12
【问题描述】:

处理一项作业,其中一个部分要求我将列表拆分为“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]] 这样的分组列表,我不想必须将lst 设置为lst = 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))

【问题讨论】:

  • 或者可能是这个:stackoverflow.com/questions/312443/…
  • 简单算术。如果您想要 x 列表中的 n 项目组,那么您只需要计算 n / x,然后您可以将整个列表除以该结果。给定 5 组包含 20 个元素的列表,您需要每 4 个项目拆分一次。
  • 你能澄清一下这些部分吗? “不使用里面的元素” ... “我不一定想使用列表里面的元素来做”.
  • 顺便说一句,代码输出不包括 15。看起来您刚刚忘记添加 1:list(range(1, lst+1))

标签: python chunking


【解决方案1】:

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

在您的示例中,一个包含 15 个元素的列表分为 3 个块组成 5 个组。可惜你不想要五个组而不是三个组,你早就完成了!

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

提示:

3 x 5 = 15
5 x 3 = 15

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

【讨论】:

    猜你喜欢
    • 2019-04-25
    • 2017-12-30
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2017-04-25
    相关资源
    最近更新 更多