【发布时间】:2014-05-25 01:21:46
【问题描述】:
我想将一个列表分成k 子列表,每个子列表的响应值大致相同。
我有表格列表:
L = [[1,2,3,2], [4,5,2,2], [2,3,9,1], [5,7,2,1], [2,3,3,1]]
响应值是每个子列表的最后一个元素。这里,响应值的范围是 [1,2]
如果 k = 2,则响应大致相等的两个子列表是 A 和 B:
A = [[1,2,3,2], [2,3,3,1] # it has response values 1,2
B = [[2,3,9,1], [4,5,2,2], [5,7,2,1]] # it has response values 1,2,1
我唯一想到的就是以某种方式使用排序。但是,可能有一些 pythonic 的方式来做到这一点。由于列表 L 可能很长,比如 10000,因此我希望有一种有效的方法。
【问题讨论】:
-
你使用的排序算法有什么问题?也许给我们看看。
-
@thefourtheye k 是我必须通过划分列表 L 形成的子列表的数量。
-
@Codingman 子列表的长度应该大致相同吗?您对“大约相等”有什么容忍度?到目前为止你写了什么?
-
@jonrsharpe 假设,L 的长度 = 13,那么对于 k=3,每个新创建的子列表将有 length/3 个元素,除了最后一个子列表将有 length/3 + length%3 个元素
-
@Codingman 并且您的示例输出与示例输入的顺序相同这一事实只是巧合吗?如果是这样,那不是一个很好的例子。
标签: python list python-2.7 sublist