【发布时间】:2019-06-03 13:03:42
【问题描述】:
我有一组项目,每个项目都分配了权重。我想把它分成大约大小相等的块。相等的累积重量。这里有一个答案可以使用 numpy https://stackoverflow.com/a/33555976/10690958 有没有一种简单的方法可以使用纯 python 来完成这个?
示例数组:
[ ['bob',12],
['jack,6],
['jim',33],
....
]
或
a, 11
b,2
c, 5
d, 3
e, 3
f, 2
这里正确的输出是(假设需要 2 个块)
[a,11],[b,2] - cumulative weight of 13
和
[c,5],[d,3],[e,3],[f,2] - cumulative weight of 13
为了进一步澄清这个问题,想象一下将 100 人分成 10 部电梯的情况,我们希望每部电梯都有相同的大约 10 部电梯。总重量(电梯中所有人的重量总和)。因此,第一个列表将成为名称和权重。这是一个负载平衡问题。
【问题讨论】:
-
你能分享一个更大的示例数组吗?和预期输出
-
my_list = ["a", "foo", "booo", "qooo", "moo", "doo", "goo"] 块 = [my_list[x:x+2] for x in range(0, len(my_list), 2)] 会起作用,它会将项目放入配对的新列表中 - 我不确定我是否了解您的输入数据
-
再次编辑以澄清。希望现在问题更清楚了