将列表分成n组的另一种方法

假设我有一个任意长度L的列表:


L = list(range(1000))

将列表分成几组的最佳方法是n什么?这是我能够想到的最佳结构,由于某种原因,它似乎并不是完成任务的最佳方法:


n = 25

for i in range(0, len(L), n):

    chunk = L[i:i+25]

有内置的功能可以做到这一点吗?


编辑:早期的答案是将我的for循环重新制作为listcomp,这不是这个主意;您基本上是用另一种形式给我我的确切答案。我正在查看是否有替代方法可以完成此任务,例如.split列表上的假设或类似内容。我也在昨晚编写的一些代码中将其用作生成器:


def split_list(L, n):

    assert type(L) is list, "L is not a list"

    for i in range(0, len(L), n):

        yield L[i:i+n]


皈依舞
浏览 452回答 3
3回答

森林海

Itertools.groupby是一个很好的工具,这是一种使用整数除法来拆分整数列表的方法:>>> for key, group in itertools.groupby(range(10), lambda k: k//3):...  print key, list(group)... 0 [0, 1, 2]1 [3, 4, 5]2 [6, 7, 8]3 [9](列表必须以0开头才能以完整的组开头。)
打开App,查看更多内容
随时随地看视频慕课网APP