将 python 列表拆分为 4 个尽可能均匀的子列表

Splitting a python list into 4 sub-lists that are as even as possible

我正在尝试将 python 列表分成尽可能均匀的四个组,例如,如果原始列表是 [1, 2, 3, 4, 5, 6, 7, 8],那么生成的四个子列表将是 [1, 5] [2,6] [3,7] [4,8],其中代码遍历原始列表中的每个数字并将它们分配给不同的组,一旦到达第 4 组,它就会返回分配给第 1 组。

如果原始列表是 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 那么生成的四组应该是 [1,5,9] [2,6,10] [3,7] [4,8] 其中两个组有 3 个项目,另外两个组有 2 个项目——使组均匀可能。

知道如何实现吗?

试试这个,它以您想要的循环方式将输入列表拆分为子列表:

def round_robin_sublists(l, n=4):
    lists = [[] for _ in range(n)]
    i = 0
    for elem in l:
        lists[i].append(elem)
        i = (i + 1) % n
    return lists

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sublist = round_robin_sublists(l) # [[1, 5, 9], [2, 6, 10], [3, 7], [4, 8]]

    
>>> [a[i::4] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7], [4, 8]]