我正在寻找一个python内置函数(或机制)来将一个列表分割成所需的段长度(而不改变输入列表)。这是我已经拥有的代码:
>>> def split_list(list, seg_length):
... inlist = list[:]
... outlist = []
...
... while inlist:
... outlist.append(inlist[0:seg_length])
... inlist[0:seg_length] = []
...
... return outlist
...
>>> alist = range(10)
>>> split_list(alist, 3)
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
你可以使用列表理解:
您需要如何使用输出?如果您只需要遍历它,那么最好创建一个iterable,它将生成您的组:
用法示例:
如果您只是在结果上循环,则这比尝试一次在内存中构造整个列表占用的内存要少得多,因为它一次只构造一个子集:
不同的输出,我仍然认为grouper function是有用的:
对于没有izip_最长的Python2.4和2.5:
一些演示代码和输出:
输出: [(0,1,2),(3,4,5),(6,7,8),(9,无,无)]
相关问题 更多 >
编程相关推荐