假设我有一个任意长度L的列表:L = list(range(1000))将列表分成几组的最佳方法是n什么?这是我能够想到的最佳结构,由于某种原因,它似乎并不是完成任务的最佳方法:n = 25for 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]
3 回答
森林海
TA贡献2011条经验 获得超2个赞
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开头才能以完整的组开头。)
- 3 回答
- 0 关注
- 451 浏览
添加回答
举报
0/150
提交
取消