当前位置: 首页 > 面试题库 >

Python-将列表分成大约相等长度的N个部分

缑永年
2023-03-14
问题内容

将列表分为大致相等的最佳方法是什么?例如,如果列表有7个元素并将其分为2部分,则我们要在一部分中获得3个元素,而另一部分应具有4个元素。

我正在寻找类似的东西even_split(L, n),打破Ln部分。

def chunks(L, n):
    """ Yield successive n-sized chunks from L.
    """
    for i in xrange(0, len(L), n):
        yield L[i:i+n]

上面的代码给出了3个块,而不是3个块。我可以简单地进行转置(对此进行迭代,并取每列的第一个元素,将其称为第一部分,然后取其第二,然后将其置于第二部分,依此类推),但这样会破坏项目的顺序。


问题答案:

这是一个可行的方法:

def chunkIt(seq, num):
    avg = len(seq) / float(num)
    out = []
    last = 0.0

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

    return out

测试:

>>> chunkIt(range(10), 3)
[[0, 1, 2], [3, 4, 5], [6, 7, 8, 9]]
>>> chunkIt(range(11), 3)
[[0, 1, 2], [3, 4, 5, 6], [7, 8, 9, 10]]
>>> chunkIt(range(12), 3)
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]


 类似资料:
  • 问题内容: 我正在寻找一种快速,干净,pythonic的方法将列表分为n个几乎相等的分区。 在这里,对列表切片的迭代有几个答案,它们与我想要的非常接近,除了它们专注于列表的 大小 ,而且我关心列表的 数量 (其中一些还填充了None)。显然,这些都是微不足道的转换,但是我正在寻找最佳实践。 同样,人们在这里指出了很好的解决方案如何将列表分成大小均匀的块?对于一个非常类似的问题,但是我对分区的数量而

  • 问题内容: 我有一个字符串,我想分成N个相等的部分。 例如,假设我有一个长度为128的字符串,我想将其分成4个长度为32的块;也就是说,第一个32个字符,然后第二个32个字符,依此类推。 我怎样才能做到这一点? 问题答案: import textwrap print textwrap.wrap(“123456789”, 2) #prints [‘12’, ‘34’, ‘56’, ‘78’, ‘9’

  • 问题内容: 我已经阅读了[将列表切成n个几乎相等长度的分区重复问题的答案。 这是公认的答案: 我想知道,如何修改这些解决方案,以便将项目随机分配给分区而不是增量分配。 问题答案: 对列表进行分区之前先对其进行调用。

  • 问题内容: 无论如何,有没有将ArrayList拆分成不同的部分,直到运行时才知道它的大小?我知道有一种方法叫做: 但我们需要明确提及列表的起始和结束范围。我的问题是,我们得到一个包含帐号的数组列表,该数组具有类似2000,4000个帐号的数据(在编码期间不会知道这些数字),我需要将此帐号传递给PL / SQL的IN查询,如下IN不支持超过1000个值,我试图将其拆分成多个块并将其发送给查询 注意

  • 问题内容: 我有一个如下所示的Pandas数据框: 我正在尝试将列表分成几列,如下所示: 没有值的列(因为列表没有那么长)用空白或NaN或其他内容填充。 我见过类似的回答这一个和其他类似的给它,而他们在长度相等的名单工作,他们都扔错误,当我尝试使用的长度不等的列表中的方法。有什么好办法吗? 问题答案: 尝试: 包括 我们可以通过以下方式确定所有格式:

  • 问题内容: 我有一个父母和几个项目。 有什么办法可以将我的列表项以均等划分父级宽度(800px)的方式排列,并且每个项目都具有相同的宽度?即每个将采取200px宽度。 我不想对值进行硬编码。是否有任何样式属性可以做到这一点? 我不想对20%之类的宽度进行硬编码,因为列表项是动态添加的。有时可能是4或5或6 问题答案: 有关详细信息:在div上使用display:table-cell`是否有缺点?