我正在寻找一种快速、简洁、符合Python风格的方法,将列表分成恰好n个近乎相等的分区。
partition([1,2,3,4,5],5)->[[1],[2],[3],[4],[5]]
partition([1,2,3,4,5],2)->[[1,2],[3,4,5]] (or [[1,2,3],[4,5]])
partition([1,2,3,4,5],3)->[[1,2],[3,4],[5]] (there are other ways to slice this one too)
这里有几个答案 Iteration over list slices 接近我想要的,但它们关注的是列表的大小,而我在意的是列表的数量(有些还用 None 填充)。显然,这些可以轻松转换,但我正在寻找最佳实践。
同样地,人们在这里提出了很好的解决方案 How do you split a list into evenly sized chunks?,针对一个非常类似的问题,但我更感兴趣的是分割的数量,而不是特定的大小,只要它们之间相差不超过 1。同样地,这是可以轻松转换的,但我正在寻找最佳实践。
zip(*partition(range(105),10))
无法工作,因为 zip 截取了...不过还是很好的。 - Walter Nissen