可以使用Python中的内置函数zip()
和*
操作符来实现将一个列表尽可能均匀地分组的功能。
具体步骤如下:
n
组。m
个。m
个元素为一组,得到n
个子列表。n
的倍数,则最后一个子列表可能会比其他子列表短,可以通过在最后一个子列表中添加None
或其他占位符来保持每个子列表的长度相同。zip()
和*
操作符将所有子列表组合成一个元组的列表,每个元组中包含了每个子列表中相同位置的元素。下面是一个示例代码,将一个长度为10
的列表分成3
组:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
n = 3
m = len(lst) // n
result = [lst[i:i+m] for i in range(0, n*m, m)]
if len(lst) % n != 0:
result[-1].extend([None] * (n - len(result[-1])))
final_result = list(zip(*result))
执行上述代码后,final_result
的值为:
[(1, 4, 7, 10), (2, 5, 8, None), (3, 6, 9, None)]
其中,每个元组中的元素表示每个子列表中相同位置的元素。可以看到,每个子列表中的元素数量尽可能均匀地分配到了每个组中。